diff --git a/src/sys/armv6/sched.c b/src/sys/armv6/sched.c index 013524f..2c09098 100644 --- a/src/sys/armv6/sched.c +++ b/src/sys/armv6/sched.c @@ -51,7 +51,7 @@ kTask_t *_current = 0x0; kTask_t *_usedMath = 0x0; -static spinLock_t schedulerSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock schedulerSpinLock = SPIN_LOCK_INITIALIZER; /************************************************************************ diff --git a/src/sys/fs/devfs/devfs.c b/src/sys/fs/devfs/devfs.c index 99079ed..4c8c50d 100644 --- a/src/sys/fs/devfs/devfs.c +++ b/src/sys/fs/devfs/devfs.c @@ -37,7 +37,7 @@ #include /* Spinlock for devfs we should start converting to sem/mutex */ -static spinLock_t devfsSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock devfsSpinLock = SPIN_LOCK_INITIALIZER; /* Length of dev list */ static int devfs_len = 0x0; diff --git a/src/sys/fs/ubixfs/dirCache.c b/src/sys/fs/ubixfs/dirCache.c index d376759..cc3e75e 100644 --- a/src/sys/fs/ubixfs/dirCache.c +++ b/src/sys/fs/ubixfs/dirCache.c @@ -36,7 +36,7 @@ #include -static spinLock_t dca_spinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock dca_spinLock = SPIN_LOCK_INITIALIZER; static struct directoryEntry * ubixfs_findName( struct directoryEntry * dirList, uInt32 size, char * name ) { diff --git a/src/sys/fs/vfs/file.c b/src/sys/fs/vfs/file.c index ca635d9..c0c36e5 100644 --- a/src/sys/fs/vfs/file.c +++ b/src/sys/fs/vfs/file.c @@ -39,7 +39,7 @@ #include #include -static spinLock_t fdTable_lock = SPIN_LOCK_INITIALIZER; +static struct spinLock fdTable_lock = SPIN_LOCK_INITIALIZER; fileDescriptor *fdTable = 0x0; diff --git a/src/sys/i386/sched.c b/src/sys/i386/sched.c index 1cb8edd..2040883 100644 --- a/src/sys/i386/sched.c +++ b/src/sys/i386/sched.c @@ -53,7 +53,7 @@ kTask_t *_current = 0x0; kTask_t *_usedMath = 0x0; -static spinLock_t schedulerSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock schedulerSpinLock = SPIN_LOCK_INITIALIZER; /************************************************************************ diff --git a/src/sys/i386/spinlock.c b/src/sys/i386/spinlock.c index a2e950d..a09ec6b 100644 --- a/src/sys/i386/spinlock.c +++ b/src/sys/i386/spinlock.c @@ -45,29 +45,26 @@ #define cpu_relax() asm volatile("pause\n": : :"memory") /* Atomic exchange (of various sizes) */ -static inline void *xchg_64(void *ptr, void *x) { - __asm__ __volatile__("xchgq %0,%1" - :"=r" ((unsigned long long) x) - :"m" (*(volatile long long *)ptr), "0" ((unsigned long long) x) - :"memory"); +static inline u_long xchg_64(volatile uint32_t *ptr, u_long x) { + __asm__ __volatile__("xchgq %1,%0" + :"+r" (x), + "+m" (*ptr)); return x; } -static inline unsigned xchg_32(void *ptr, unsigned x) { - __asm__ __volatile__("xchgl %0,%1" - :"=r" ((unsigned) x) - :"m" (*(volatile unsigned *)ptr), "0" (x) - :"memory"); +static inline unsigned xchg_32(volatile uint32_t *ptr, uint32_t x) { + __asm__ __volatile__("xchgl %1,%0" + :"+r" (x), + "+m" (*ptr)); return x; } -static inline unsigned short xchg_16(void *ptr, unsigned short x) { - __asm__ __volatile__("xchgw %0,%1" - :"=r" ((unsigned short) x) - :"m" (*(volatile unsigned short *)ptr), "0" (x) - :"memory"); +static inline unsigned short xchg_16(volatile uint32_t *ptr, uint16_t x) { + __asm__ __volatile__("xchgw %1,%0" + :"+r" (x), + "+m" (*ptr)); return x; } @@ -89,8 +86,8 @@ } void spinLock(spinLock_t *lock) { - spinLock_t me; - spinLock_t *tail; + struct spinLock me; + spinLock_t tail; /* Fast path - no users */ if (!cmpxchg(lock, NULL, LLOCK_FLAG)) @@ -140,7 +137,7 @@ } } -static void listlock_unlock(spinLock_t *l) +void spinUnlock(spinLock_t *l) { spinLock_t tail; spinLock_t tp; @@ -203,7 +200,7 @@ tail->locked = 1; } -static int spinTrylock(spinLock_t *l) +int spinTryLock(spinLock_t *l) { /* Simple part of a spin-lock */ if (!cmpxchg(l, NULL, LLOCK_FLAG)) return 0; @@ -212,6 +209,7 @@ return LOCKED; } +#ifdef _BALLS void spinLockInit_old(spinLock_t *lock) { *lock = SPIN_LOCK_INITIALIZER; } @@ -243,3 +241,4 @@ int spinLockLocked_old(spinLock_t *lock) { return (*lock != 0); } +#endif diff --git a/src/sys/include/ubixos/spinlock.h b/src/sys/include/ubixos/spinlock.h index 5cf104a..21352d6 100644 --- a/src/sys/include/ubixos/spinlock.h +++ b/src/sys/include/ubixos/spinlock.h @@ -34,21 +34,21 @@ #define LOCKED 1 #define UNLOCKED 0 -#define SPIN_LOCK_INITIALIZER 0 +#define SPIN_LOCK_INITIALIZER {NULL, 0} #define LLOCK_FLAG (void *)1 //typedef volatile int spinLock_t; struct spinLock { - spinLock_t next; + struct spinLock *next; int locked; }; typedef struct spinLock *spinLock_t; -extern spinLock_t Master; +extern struct spinLock Master; -void spinLockInit(spinLock_t *); +void spinLockInit(spinLock_t); void spinUnlock(spinLock_t *); int spinTryLock(spinLock_t *); void spinLock(spinLock_t *); @@ -58,8 +58,3 @@ int spinLockLocked(spinLock_t *); #endif - -/*** - END - ***/ - diff --git a/src/sys/isa/atkbd.c b/src/sys/isa/atkbd.c index 6bab698..900c3b2 100644 --- a/src/sys/isa/atkbd.c +++ b/src/sys/isa/atkbd.c @@ -50,7 +50,7 @@ static uInt16 stdinSize; static uInt32 controlKeys = 0x0; -static spinLock_t atkbdSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock atkbdSpinLock = SPIN_LOCK_INITIALIZER; static unsigned int keyboardMap[255][8] = { /* Ascii, Shift, Ctrl, Alt, Num, Caps, Shift Caps, Shift Num */ diff --git a/src/sys/isa/fdc.c b/src/sys/isa/fdc.c index e36afb1..8824f96 100644 --- a/src/sys/isa/fdc.c +++ b/src/sys/isa/fdc.c @@ -40,7 +40,7 @@ #include #include -static spinLock_t fdcSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock fdcSpinLock = SPIN_LOCK_INITIALIZER; static volatile bool done = FALSE; static drvGeom geometry = { dg144Heads,dg144Tracks,dg144Spt }; diff --git a/src/sys/isa/ne2k.c b/src/sys/isa/ne2k.c index 525878e..cda23ce 100644 --- a/src/sys/isa/ne2k.c +++ b/src/sys/isa/ne2k.c @@ -41,7 +41,7 @@ #include -static spinLock_t ne2k_spinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock ne2k_spinLock = SPIN_LOCK_INITIALIZER; static int dp_pkt2user(struct device *dev,int page,int length); static void getblock(struct device *dev,int page,size_t offset,size_t size,void *dst); diff --git a/src/sys/kernel/smp.c b/src/sys/kernel/smp.c index b58f150..1c9f986 100644 --- a/src/sys/kernel/smp.c +++ b/src/sys/kernel/smp.c @@ -34,8 +34,8 @@ #include #include -static spinLock_t initSpinLock = SPIN_LOCK_INITIALIZER; -static spinLock_t cpuInfoLock = SPIN_LOCK_INITIALIZER; +static struct spinLock initSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock cpuInfoLock = SPIN_LOCK_INITIALIZER; static uInt32 cpus = 0; struct cpuinfo_t cpuinfo[8]; @@ -119,7 +119,7 @@ } } -static spinLock_t bkl = SPIN_LOCK_INITIALIZER; +static struct spinLock bkl = SPIN_LOCK_INITIALIZER; uInt8 kernel_function(void) { struct cpuinfo_t *cpu; diff --git a/src/sys/kernel/syscall_new.c b/src/sys/kernel/syscall_new.c index 84aa0c0..eda9474 100644 --- a/src/sys/kernel/syscall_new.c +++ b/src/sys/kernel/syscall_new.c @@ -37,7 +37,7 @@ #include #include -spinLock_t Master = SPIN_LOCK_INITIALIZER; +struct spinLock Master = SPIN_LOCK_INITIALIZER; void syscall( struct trapframe *frame ) { uint32_t code = 0x0; @@ -131,8 +131,3 @@ kprintf( "Invalid System Call #[%i]\n", sys_call ); return (0); } - -/*** - END - ***/ - diff --git a/src/sys/kernel/tty.c b/src/sys/kernel/tty.c index 1542be4..c1094a4 100644 --- a/src/sys/kernel/tty.c +++ b/src/sys/kernel/tty.c @@ -37,7 +37,7 @@ static tty_term *terms = 0x0; tty_term *tty_foreground = 0x0; -static spinLock_t tty_spinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock tty_spinLock = SPIN_LOCK_INITIALIZER; int tty_init() { int i = 0x0; diff --git a/src/sys/lib/kmalloc.c b/src/sys/lib/kmalloc.c index b915711..94531b4 100644 --- a/src/sys/lib/kmalloc.c +++ b/src/sys/lib/kmalloc.c @@ -51,8 +51,8 @@ /* Set up our spinlocks so we do not corrupt linked lists if we have re-entrancy */ -static spinLock_t mallocSpinLock = SPIN_LOCK_INITIALIZER; -static spinLock_t emptyDescSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock mallocSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock emptyDescSpinLock = SPIN_LOCK_INITIALIZER; /************************************************************************ diff --git a/src/sys/mpi/system.c b/src/sys/mpi/system.c index cf63d5f..f80b3f6 100644 --- a/src/sys/mpi/system.c +++ b/src/sys/mpi/system.c @@ -33,7 +33,7 @@ #include static mpi_mbox_t *mboxList = 0x0; -static spinLock_t mpiSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock mpiSpinLock = SPIN_LOCK_INITIALIZER; /***************************************************************************************** diff --git a/src/sys/net/net/sys_arch.c b/src/sys/net/net/sys_arch.c index 91ed63a..8f5cf99 100644 --- a/src/sys/net/net/sys_arch.c +++ b/src/sys/net/net/sys_arch.c @@ -19,7 +19,7 @@ #define INFINITE_TIME 0 static struct timeval starttime; -static spinLock_t netThreadSpinlock = SPIN_LOCK_INITIALIZER; +static struct spinLock netThreadSpinlock = SPIN_LOCK_INITIALIZER; static struct sys_thread *threads = 0x0; static uint16_t cond_wait(ubthread_cond_t *cond, ubthread_mutex_t *mutex, uint16_t timeout); diff --git a/src/sys/pci/lnc.c b/src/sys/pci/lnc.c index 3e2f785..e34378f 100644 --- a/src/sys/pci/lnc.c +++ b/src/sys/pci/lnc.c @@ -34,9 +34,12 @@ #include #include #include +#include struct lncInfo *lnc = 0x0; +static struct spinLock lnc_intSpinLock = SPIN_LOCK_INITIALIZER; + static char const * const nicIdent[] = { "Unknown", "BICC", "NE2100", "DEPCA", "CNET98S" }; static char const * const icIdent[] = { "Unknown", "LANCE", "C-LANCE", "PCnet-ISA", "PCnet-ISA+", "PCnet-ISA II", "PCnet-32 VL-Bus", "PCnet-PCI", "PCnet-PCI II", "PCnet-FAST", "PCnet-FAST+", "PCnet-Home", }; diff --git a/src/sys/sys/device.c b/src/sys/sys/device.c index 33f535d..1239459 100644 --- a/src/sys/sys/device.c +++ b/src/sys/sys/device.c @@ -35,7 +35,7 @@ /* Linked list of drivers loaded in the system accessable by the subsystem only */ static struct device_node *devices = 0x0; -static spinLock_t deviceSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock deviceSpinLock = SPIN_LOCK_INITIALIZER; /***************************************************************************************** diff --git a/src/sys/vmm/copyvirtualspace.c b/src/sys/vmm/copyvirtualspace.c index d8e0092..e843351 100644 --- a/src/sys/vmm/copyvirtualspace.c +++ b/src/sys/vmm/copyvirtualspace.c @@ -33,7 +33,7 @@ #include #include -static spinLock_t cvsSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock cvsSpinLock = SPIN_LOCK_INITIALIZER; /************************************************************************ diff --git a/src/sys/vmm/getfreepage.c b/src/sys/vmm/getfreepage.c index 9025909..da85df1 100644 --- a/src/sys/vmm/getfreepage.c +++ b/src/sys/vmm/getfreepage.c @@ -31,7 +31,7 @@ #include #include -static spinLock_t vmmGFPlock = SPIN_LOCK_INITIALIZER; +static struct spinLock vmmGFPlock = SPIN_LOCK_INITIALIZER; /************************************************************************ diff --git a/src/sys/vmm/getfreevirtualpage.c b/src/sys/vmm/getfreevirtualpage.c index aefe35d..152dce2 100644 --- a/src/sys/vmm/getfreevirtualpage.c +++ b/src/sys/vmm/getfreevirtualpage.c @@ -33,7 +33,7 @@ #include #include -static spinLock_t fvpSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock fvpSpinLock = SPIN_LOCK_INITIALIZER; /************************************************************************ diff --git a/src/sys/vmm/pagefault.c b/src/sys/vmm/pagefault.c index 8d63648..b800544 100644 --- a/src/sys/vmm/pagefault.c +++ b/src/sys/vmm/pagefault.c @@ -34,7 +34,7 @@ #include #include -static spinLock_t pageFaultSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock pageFaultSpinLock = SPIN_LOCK_INITIALIZER; /***************************************************************************************** diff --git a/src/sys/vmm/paging.c b/src/sys/vmm/paging.c index f7bf58e..f203bf1 100644 --- a/src/sys/vmm/paging.c +++ b/src/sys/vmm/paging.c @@ -36,8 +36,8 @@ uint32_t *kernelPageDirectory = 0x0; // Pointer To Kernel Page Directory -static spinLock_t fkpSpinLock = SPIN_LOCK_INITIALIZER; -static spinLock_t rmpSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock fkpSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock rmpSpinLock = SPIN_LOCK_INITIALIZER; /***************************************************************************************** Function: int vmm_pagingInit(); diff --git a/src/sys/vmm/vmm_memory.c b/src/sys/vmm/vmm_memory.c index a88781d..6c19060 100644 --- a/src/sys/vmm/vmm_memory.c +++ b/src/sys/vmm/vmm_memory.c @@ -40,8 +40,8 @@ #include static uInt32 freePages = 0; -static spinLock_t vmmSpinLock = SPIN_LOCK_INITIALIZER; -static spinLock_t vmmCowSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock vmmSpinLock = SPIN_LOCK_INITIALIZER; +static struct spinLock vmmCowSpinLock = SPIN_LOCK_INITIALIZER; int numPages = 0x0; mMap *vmmMemoryMap = (mMap *) VMM_MMAP_ADDR_RMODE;