]> git.neil.brown.name Git - history.git/commitdiff
Linux 2.3.1pre3 2.3.1pre3
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:25:02 +0000 (15:25 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:25:02 +0000 (15:25 -0500)
As to 2.3.x, we're beginning with a long overdue waitqueue cleanup, which
means that a lot of small details need to get fixed in a variety of files.
A working pre-patch of this is to be found as pre-patch-2.3.1-3, but not
all drivers have been fixed - and help is appreciated (even drivers that
_have_ been fixed have not necessarily actually been tested due to lack of
hardware).

Linus

69 files changed:
arch/i386/kernel/apm.c
arch/m68k/kernel/ints.c
arch/m68k/mm/kmap.c
arch/m68k/mvme147/config.c
arch/m68k/q40/config.c
arch/m68k/sun3x/time.c
arch/ppc/kernel/pmac_pic.c
arch/sparc/ap1000/util.c
arch/sparc/kernel/init_task.c
arch/sparc/mm/asyncd.c
arch/sparc64/kernel/init_task.c
arch/sparc64/mm/asyncd.c
arch/sparc64/solaris/timod.c
drivers/block/ide-tape.c
drivers/block/md.c
drivers/block/nbd.c
drivers/char/bttv.c
drivers/char/bttv.h
drivers/char/lp.c
drivers/char/msp3400.c
drivers/char/pty.c
drivers/fc4/fc.c
drivers/net/ppp.c
drivers/sbus/audio/audio.c
drivers/sbus/audio/dbri.h
drivers/sbus/char/bpp.c
drivers/sbus/char/pcikbd.c
drivers/sbus/char/sab82532.c
drivers/sbus/char/su.c
drivers/sbus/char/sunkbd.c
drivers/sbus/char/sunmouse.c
drivers/sbus/char/vfc.h
drivers/sbus/char/zs.c
drivers/sbus/char/zs.h
drivers/scsi/pluto.c
fs/coda/psdev.c
fs/fat/inode.c
fs/ncpfs/inode.c
fs/smbfs/inode.c
include/asm-m68k/page.h
include/asm-m68k/q40_keyboard.h
include/asm-m68k/semaphore-helper.h
include/asm-m68k/semaphore.h
include/asm-sparc/asm_offsets.h
include/asm-sparc/audioio.h
include/asm-sparc/semaphore.h
include/asm-sparc64/asm_offsets.h
include/asm-sparc64/audioio.h
include/asm-sparc64/sab82532.h
include/asm-sparc64/semaphore.h
include/asm-sparc64/spinlock.h
include/linux/coda_psdev.h
include/linux/if_pppvar.h
include/linux/msdos_fs_sb.h
include/linux/ncp_fs_sb.h
include/linux/parport.h
include/linux/raid5.h
include/linux/smb_fs_sb.h
include/linux/wait.h
kernel/sched.c
net/core/firewall.c
net/core/sock.c
net/ipv4/af_inet.c
net/ipv4/icmp.c
net/ipv4/ip_masq_mfw.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/netlink/af_netlink.c
net/unix/af_unix.c

index 6eba890259979d1a7d69bd0a3da83ac6f1e7425d..563c1f07a327b8fb8688d214801f7f272b398eb3 100644 (file)
@@ -1017,7 +1017,7 @@ static ssize_t do_read(struct file *fp, char *buf, size_t count, loff_t *ppos)
        struct apm_bios_struct *        as;
        int                     i;
        apm_event_t             event;
-       struct wait_queue       wait = { current,       NULL };
+        DECLARE_WAITQUEUE(wait, current);
 
        as = fp->private_data;
        if (check_apm_bios_struct(as, "read"))
index 66fc41064066f7234e2e8b39b784e7514fcc42be..31931a920ebc70daa54bb2888306a3a45a048039 100644 (file)
@@ -25,6 +25,7 @@
  *           which must be served                               /Roman Zippel
  */
 
+#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/sched.h>
 #include <linux/kernel_stat.h>
index 3fefe4e03fbabf8a04a31e2613f09da1a13e7552..60912a5b7752cb9bc02d574f02175978a7cc5c5b 100644 (file)
@@ -7,6 +7,7 @@
  *          used by other architectures                /Roman Zippel
  */
 
+#include <linux/config.h>
 #include <linux/mm.h>
 #include <linux/kernel.h>
 #include <linux/string.h>
index 639d5f640e1a3c65f81ba2e1c28d81bb23cfb010..2fe61766a3ecbfa7ca091f876c0e51d1462af750 100644 (file)
@@ -13,7 +13,6 @@
  * for more details.
  */
 
-#include <linux/config.h>
 #include <stdarg.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
index e3c35c60c8fb86bc603bb07b9e35f2d020f96d90..0c6871f88bd0ab3f86103b8b86bec566513a94a0 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include <stdarg.h>
+#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
index 39fa5f696306c1563d2ce451568d7cc88b5a4a93..73a9efd32b3a088a4e5b1b5b2b3e658730be8b8d 100644 (file)
@@ -4,7 +4,6 @@
  *  Sun3x-specific time handling
  */
 
-#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/init.h>
 #include <linux/sched.h>
index 6a49f14052ea03fba70270739361e1f9526a4b1a..6b9d8ca5388153e7fa881827e8277ad5dffc19d8 100644 (file)
@@ -1,4 +1,4 @@
-
+#include <linux/config.h>
 #include <linux/stddef.h>
 #include <linux/init.h>
 #include <linux/sched.h>
index 079c9f4c0db6b22edcd5db53b30cca70edbae755..1fe23dc41ef3dfe0626db525189c2fd1c57987a8 100644 (file)
@@ -355,7 +355,7 @@ void ap_exit_irq(int irq)
 }
 
 
-static struct wait_queue *timer_wait = NULL;
+static DECLARE_WAIT_QUEUE_HEAD(timer_wait);
 
 static void wait_callback(unsigned long _ignored)
 {
index 156ed433715c38f4f318b9f5983c82174590f455..dc2bc917196f29fd2c4a06c0062392eeb8358a90 100644 (file)
@@ -9,11 +9,13 @@ static struct fs_struct init_fs = INIT_FS;
 static struct file * init_fd_array[NR_OPEN] = { NULL, };
 static struct files_struct init_files = INIT_FILES;
 static struct signal_struct init_signals = INIT_SIGNALS;
-struct mm_struct init_mm = INIT_MM;
+struct mm_struct init_mm = INIT_MM(init_mm);
 
 /* .text section in head.S is aligned at 8k boundry and this gets linked
  * right after that so that the init_task_union is aligned properly as well.
  * If this is not aligned on a 8k boundry, then you should change code
  * in etrap.S which assumes it.
  */
-union task_union init_task_union __attribute__((__section__(".text"))) = { INIT_TASK };
+union task_union init_task_union
+       __attribute__((__section__(".text"))) =
+               { INIT_TASK(init_task_union.task) };
index 666bf8429f7f3be1a2bbfaafc08a738fb7a81ad8..1ae532b7c6eb6efc30b5854eef9bdb367cd70260 100644 (file)
@@ -1,4 +1,4 @@
-/*  $Id: asyncd.c,v 1.12 1998/09/13 04:30:30 davem Exp $
+/*  $Id: asyncd.c,v 1.13 1999/05/12 11:11:34 davem Exp $
  *  The asyncd kernel daemon. This handles paging on behalf of 
  *  processes that receive page faults due to remote (async) memory
  *  accesses. 
@@ -39,7 +39,7 @@ static struct {
 /* 
  * The wait queue for waking up the async daemon:
  */
-static struct wait_queue * asyncd_wait = NULL;
+static DECLARE_WAIT_QUEUE_HEAD(asyncd_wait);
 
 struct async_job {
        volatile struct async_job *next;
index 86b6c3dd60fc379f62467e57c633dddd13877965..66869404da95199aacf44caeedca9ca68f35864b 100644 (file)
@@ -9,11 +9,13 @@ static struct fs_struct init_fs = INIT_FS;
 static struct file * init_fd_array[NR_OPEN] = { NULL, };
 static struct files_struct init_files = INIT_FILES;
 static struct signal_struct init_signals = INIT_SIGNALS;
-struct mm_struct init_mm = INIT_MM;
+struct mm_struct init_mm = INIT_MM(init_mm);
 
 /* .text section in head.S is aligned at 2 page boundry and this gets linked
  * right after that so that the init_task_union is aligned properly as well.
  * We really don't need this special alignment like the Intel does, but
  * I do it anyways for completeness.
  */
-union task_union init_task_union __attribute__((__section__(".text"))) = { INIT_TASK };
+union task_union init_task_union
+       __attribute__((__section__(".text"))) =
+               { INIT_TASK(init_task_union.task) };
index a0d1c8144d67728ed54cbd615813bfa421451add..d1c7f5d201f6438e823ed96b074c026e92f7a154 100644 (file)
@@ -1,4 +1,4 @@
-/*  $Id: asyncd.c,v 1.5 1998/09/13 04:30:33 davem Exp $
+/*  $Id: asyncd.c,v 1.6 1999/05/12 11:11:48 davem Exp $
  *  The asyncd kernel daemon. This handles paging on behalf of 
  *  processes that receive page faults due to remote (async) memory
  *  accesses. 
@@ -39,7 +39,7 @@ static struct {
 /* 
  * The wait queue for waking up the async daemon:
  */
-static struct wait_queue * asyncd_wait = NULL;
+static DECLARE_WAIT_QUEUE_HEAD(asyncd_wait);
 
 struct async_job {
        volatile struct async_job *next;
index 7673702d25cb90523e1f3cfa7b5762c12a695db9..cba34c36d9d0fdfa020d3c4d715315767690819d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: timod.c,v 1.1 1998/03/26 08:46:18 jj Exp $
+/* $Id: timod.c,v 1.2 1999/05/12 11:11:55 davem Exp $
  * timod.c: timod emulation.
  *
  * Copyright (C) 1998 Patrik Rak (prak3264@ss1000.ms.mff.cuni.cz)
@@ -76,7 +76,7 @@ void mykfree(void *p)
 
 #define BUF_SIZE       PAGE_SIZE
 #define PUT_MAGIC(a,m)
-#define CHECK_MAGIC(a,m)
+#define SCHECK_MAGIC(a,m)
 #define BUF_OFFSET     0
 #define MKCTL_TRAILER  0
 
@@ -86,7 +86,7 @@ void mykfree(void *p)
 #define BUFPAGE_MAGIC  0xBADC0DEDDEADBABEL
 #define MKCTL_MAGIC    0xDEADBABEBADC0DEDL
 #define PUT_MAGIC(a,m) do{(*(u64*)(a))=(m);}while(0)
-#define CHECK_MAGIC(a,m)       do{if((*(u64*)(a))!=(m))printk("%s,%u,%s(): magic %08x at %p corrupted!\n",\
+#define SCHECK_MAGIC(a,m)      do{if((*(u64*)(a))!=(m))printk("%s,%u,%s(): magic %08x at %p corrupted!\n",\
                                __FILE__,__LINE__,__FUNCTION__,(m),(a));}while(0)
 #define BUF_OFFSET     sizeof(u64)
 #define MKCTL_TRAILER  sizeof(u64)
@@ -117,8 +117,8 @@ static void putpage(char *p)
 {
        SOLD("putting page");
        p = p - BUF_OFFSET;
-       CHECK_MAGIC(p,BUFPAGE_MAGIC);
-       CHECK_MAGIC(p+PAGE_SIZE-sizeof(u64),BUFPAGE_MAGIC);
+       SCHECK_MAGIC(p,BUFPAGE_MAGIC);
+       SCHECK_MAGIC(p+PAGE_SIZE-sizeof(u64),BUFPAGE_MAGIC);
        spin_lock(&timod_pagelock);
        if (page) {
                spin_unlock(&timod_pagelock);
@@ -721,7 +721,7 @@ int timod_getmsg(unsigned int fd, char *ctl_buf, int ctl_maxlen, s32 *ctl_len,
 #define min(a,b) ((a)<(b)?(a):(b))
 #endif
                int l = min(ctl_maxlen, it->length);
-               CHECK_MAGIC((char*)((u64)(((char *)&it->type)+sock->offset+it->length+7)&~7),MKCTL_MAGIC);
+               SCHECK_MAGIC((char*)((u64)(((char *)&it->type)+sock->offset+it->length+7)&~7),MKCTL_MAGIC);
                SOLD("purting ctl data");
                if(copy_to_user(ctl_buf,
                        (char*)&it->type + sock->offset, l))
index 5b618d8f2beaa3ffd3440ea110fd2d6eb098a1b4..e97087097dc195c2cea652238ab5eb32676ae1f8 100644 (file)
@@ -2334,7 +2334,7 @@ static int idetape_queue_pc_tail (ide_drive_t *drive,idetape_pc_t *pc)
  */
 static void idetape_wait_for_request (ide_drive_t *drive, struct request *rq)
 {
-       struct semaphore sem = MUTEX_LOCKED;
+       DECLARE_MUTEX_LOCKED(sem);
 
 #if IDETAPE_DEBUG_BUGS
        if (rq == NULL || !IDETAPE_RQ_CMD (rq->cmd)) {
index fd36d507363b706b0a44db26ad753d685afff104..427d7fa94c60da0a94978cd9308ccd12944023de 100644 (file)
@@ -817,7 +817,7 @@ struct md_thread *md_register_thread (void (*run) (void *), void *data)
        struct md_thread *thread = (struct md_thread *)
                kmalloc(sizeof(struct md_thread), GFP_KERNEL);
        int ret;
-       struct semaphore sem = MUTEX_LOCKED;
+       DECLARE_MUTEX_LOCKED(sem);
        
        if (!thread) return NULL;
        
@@ -838,7 +838,7 @@ struct md_thread *md_register_thread (void (*run) (void *), void *data)
 
 void md_unregister_thread (struct md_thread *thread)
 {
-       struct semaphore sem = MUTEX_LOCKED;
+       DECLARE_MUTEX_LOCKED(sem);
        
        thread->sem = &sem;
        thread->run = NULL;
index ca4e93ed0c39cc28c0ed873b86e17be955180827..da74a771b196769d2547d651c59ce9b58469730a 100644 (file)
@@ -75,7 +75,7 @@ static int nbd_open(struct inode *inode, struct file *file)
        nbdev = &nbd_dev[dev];
        nbd_dev[dev].refcnt++;
        if (!(nbdev->flags & NBD_INITIALISED)) {
-               nbdev->queue_lock = MUTEX;
+               init_MUTEX(&nbdev->queue_lock);
                nbdev->flags |= NBD_INITIALISED;
        }
        MOD_INC_USE_COUNT;
index 12ac86673fce14e62833f0bb75fc39c284f23601..cdd37ef465a0d84a1abadb853e611ee72252376a 100644 (file)
@@ -3421,10 +3421,10 @@ int configure_bt848(struct pci_dev *dev, int bttv_num)
         btv->risc_jmp=NULL;
         btv->vbi_odd=NULL;
         btv->vbi_even=NULL;
-        btv->vbiq=NULL;
-        btv->capq=NULL;
-        btv->capqo=NULL;
-        btv->capqe=NULL;
+        init_waitqueue_head(&btv->vbiq);
+        init_waitqueue_head(&btv->capq);
+        init_waitqueue_head(&btv->capqo);
+        init_waitqueue_head(&btv->capqe);
         btv->vbip=VBIBUF_SIZE;
 
         btv->id=dev->device;
index 479384783b486cea00dd9891a68388614761ca70..bd6721956d48a12cc6cb0cd56a486eb31c230191 100644 (file)
@@ -122,10 +122,10 @@ struct bttv
        u32 *vbi_even;
        u32 bus_vbi_even;
        u32 bus_vbi_odd;
-       struct wait_queue *vbiq;
-       struct wait_queue *capq;
-       struct wait_queue *capqo;
-       struct wait_queue *capqe;
+       wait_queue_head_t vbiq;
+       wait_queue_head_t capq;
+       wait_queue_head_t capqo;
+       wait_queue_head_t capqe;
        int vbip;
 
        u32 *risc_odd;
index 996c15019520e40e353f9d99c6a54915adc56d46..4b005b96daf630f199df78ef0964c6fea05655ea 100644 (file)
@@ -187,15 +187,7 @@ int main(int argc, char **argv)
 /* if you have more than 3 printers, remember to increase LP_NO */
 #define LP_NO 3
 
-struct lp_struct lp_table[LP_NO] =
-{
-       [0 ... LP_NO-1] = {NULL, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT,
-                          NULL,
-#ifdef LP_STATS
-                          0, 0, {0},
-#endif
-                          NULL, 0, 0, 0}
-};
+struct lp_struct lp_table[LP_NO];
 
 /* Test if printer is ready */
 #define        LP_READY(status)        ((status) & LP_PBUSY)
@@ -737,6 +729,7 @@ static int lp_open(struct inode * inode, struct file * file)
                LP_F(minor) &= ~LP_BUSY;
                return -ENOMEM;
        }
+       init_waitqueue_head(&(lp_table[minor].wait_q));
        return 0;
 }
 
@@ -929,6 +922,24 @@ int lp_init(void)
        unsigned int i;
        struct parport *port;
 
+       for(i = 0; i < LP_NO; i++) {
+               lp_table[i].dev = NULL;
+               lp_table[i].flags = 0;
+               lp_table[i].chars = LP_INIT_CHAR;
+               lp_table[i].time = LP_INIT_TIME;
+               lp_table[i].wait = LP_INIT_WAIT;
+               lp_table[i].lp_buffer = NULL;
+#ifdef LP_STATS
+               lp_table[i].lastcall = 0;
+               lp_table[i].runchars = 0;
+               memset(&lp_table[i].stats, 0, sizeof(struct lp_stats));
+#endif
+               init_waitqueue_head(&lp_table[i].wait_q);
+               lp_table[i].last_error = 0;
+               lp_table[i].irq_detected = 0;
+               lp_table[i].irq_missed = 0;
+       }
+
        switch (parport_nr[0])
        {
        case LP_PARPORT_OFF:
index 4ccdb8f15f0f09b79c96e639f996868e3f4b9538..5791e149e41a306125a2f04b6f70a202f92a7851 100644 (file)
@@ -83,7 +83,7 @@ struct msp3400c {
 
        /* thread */
        struct task_struct  *thread;
-       struct wait_queue   *wq;
+       wait_queue_head_t    wq;
        struct semaphore    *notify;
        int                  active,restart,rmmod;
 
@@ -523,7 +523,6 @@ static int msp3400c_thread(void *data)
        current->fs->umask = 0;
        strcpy(current->comm,"msp3400");
 
-       msp->wq     = NULL;
        msp->thread = current;
 
 #ifdef __SMP__
@@ -748,7 +747,7 @@ static int msp3410d_thread(void *data)
 {
        unsigned long flags;
        struct msp3400c *msp = data;
-       struct semaphore sem = MUTEX_LOCKED;
+       DECLARE_MUTEX_LOCKED(sem);
        int              i, val;
 
        /* lock_kernel(); */
@@ -844,7 +843,7 @@ done:
 static struct msp3400c *mspmix = NULL;  /* ugly hack, should do something more sensible */
 static int mixer_num;
 static int mixer_modcnt = 0;
-static struct semaphore mixer_sem = MUTEX;
+static DECLARE_MUTEX(mixer_sem);
 
 static int mix_to_v4l(int i)
 {
@@ -1016,7 +1015,7 @@ static /*const*/ struct file_operations msp3400c_mixer_fops = {
 
 static int msp3400c_attach(struct i2c_device *device)
 {
-       struct semaphore sem = MUTEX_LOCKED;
+       DECLARE_MUTEX_LOCKED(sem);
        struct msp3400c *msp;
        int              rev1,rev2;
        LOCK_FLAGS;
@@ -1030,6 +1029,7 @@ static int msp3400c_attach(struct i2c_device *device)
        msp->right  = 65535;
        msp->bass   = 32768;
        msp->treble = 32768;
+       init_waitqueue_head(&msp->wq);
 
        LOCK_I2C_BUS(msp->bus);
        if (-1 == msp3400c_reset(msp->bus)) {
@@ -1069,7 +1069,6 @@ static int msp3400c_attach(struct i2c_device *device)
 
        /* startup control thread */
        MOD_INC_USE_COUNT;
-       msp->wq     = NULL;
        msp->notify = &sem;
        kernel_thread(msp3400c_thread, (void *)msp, 0);
        down(&sem);
@@ -1090,7 +1089,7 @@ static int msp3400c_attach(struct i2c_device *device)
 
 static int msp3400c_detach(struct i2c_device *device)
 {
-       struct semaphore sem = MUTEX_LOCKED;
+       DECLARE_MUTEX_LOCKED(sem);
        struct msp3400c *msp  = (struct msp3400c*)device->data;
        LOCK_FLAGS;
     
index dab25c97649fee61ad6871c0b45c6004f9938410..1e67c604e836a56ea79d9fb4a7c71b26a03c4214 100644 (file)
@@ -405,6 +405,8 @@ __initfunc(int pty_init(void))
 #ifdef CONFIG_UNIX98_PTYS
        printk("pty: %d Unix98 ptys configured\n", UNIX98_NR_MAJORS*NR_PTYS);
        for ( i = 0 ; i < UNIX98_NR_MAJORS ; i++ ) {
+               int j;
+
                ptm_driver[i] = pty_driver;
                ptm_driver[i].name = "ptm";
                ptm_driver[i].proc_entry = 0;
@@ -417,6 +419,9 @@ __initfunc(int pty_init(void))
                ptm_driver[i].termios = ptm_termios[i];
                ptm_driver[i].termios_locked = ptm_termios_locked[i];
                ptm_driver[i].driver_state = ptm_state[i];
+
+               for (j = 0; j < NR_PTYS; j++)
+                       init_waitqueue_head(&ptm_state[i][j].open_wait);
                
                pts_driver[i] = pty_slave_driver;
                pts_driver[i].name = "pts";
index 86b3a33291ce4a2abb8ca2db5e19fca4823281cc..8b45510a14afb06ae4fdb3405660df328d364f8c 100644 (file)
@@ -551,7 +551,7 @@ int fcp_initialize(fc_channel *fcchain, int count)
        l->magic = LSMAGIC;
        l->count = count;
        FCND(("FCP Init for %d channels\n", count))
-       l->sem = MUTEX_LOCKED;
+       init_MUTEX_LOCKED(&l->sem);
        l->timer.function = fcp_login_timeout;
        l->timer.data = (unsigned long)l;
        atomic_set (&l->todo, count);
@@ -672,7 +672,7 @@ int fcp_forceoffline(fc_channel *fcchain, int count)
        l.count = count;
        l.magic = LSOMAGIC;
        FCND(("FCP Force Offline for %d channels\n", count))
-       l.sem = MUTEX_LOCKED;
+       init_MUTEX_LOCKED(&l.sem);
        l.timer.function = fcp_login_timeout;
        l.timer.data = (unsigned long)&l;
        atomic_set (&l.todo, count);
@@ -933,7 +933,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
        fcp_cmd *cmd;
        fcp_cmnd *fcmd;
        fc_channel *fc = FC_SCMND(SCpnt);
-        struct semaphore sem = MUTEX_LOCKED;
+        DECLARE_MUTEX_LOCKED(sem);
 
        if (!fc->rst_pkt) {
                fc->rst_pkt = (Scsi_Cmnd *) kmalloc(sizeof(SCpnt), GFP_KERNEL);
@@ -1070,7 +1070,7 @@ static int fc_do_els(fc_channel *fc, unsigned int alpa, void *data, int len)
        
        memset (&l, 0, sizeof(lse));
        l.magic = LSEMAGIC;
-       l.sem = MUTEX_LOCKED;
+       init_MUTEX_LOCKED(&l.sem);
        l.timer.function = fcp_login_timeout;
        l.timer.data = (unsigned long)&l;
        l.status = FC_STATUS_TIMED_OUT;
index 0691956286ddf5b817b992c438ffaca42a855837..ab73353ac2f58c1a6d9eb921541bae6b40965777 100644 (file)
@@ -2834,7 +2834,7 @@ ppp_alloc(void)
        ppp->magic = PPP_MAGIC;
        ppp->next = NULL;
        ppp->inuse = 1;
-       ppp->read_wait = NULL;
+       init_waitqueue_head(&ppp->read_wait);
 
        /*
         * Make up a suitable name for this device
index b021019416db43f53d32a22641064d1b8cf60aea..112effea6448fbbc6e4f9377580e09c090ccdcd9 100644 (file)
@@ -117,6 +117,11 @@ int register_sparcaudio_driver(struct sparcaudio_driver *drv, int duplex)
          * TODO: Make number of input/output buffers tunable parameters
          */
 
+        init_waitqueue_head(&drv->open_wait);
+        init_waitqueue_head(&drv->output_write_wait);
+        init_waitqueue_head(&drv->output_drain_wait);
+        init_waitqueue_head(&drv->input_read_wait);
+
         drv->num_output_buffers = 8;
        drv->output_buffer_size = (4096 * 2);
        drv->playing_count = 0;
index 8a3dab4f7cdd8c8987376817bc118bdffc321676..1cd5987438d87ce7454778d26ebac08ea7d7f7be 100644 (file)
@@ -85,7 +85,7 @@ struct dbri {
   struct cs4215 mm;                            /* mmcodec special info */
 
 #if 0
-  struct wait_queue *wait, *int_wait;          /* Where to sleep if busy */
+  wait_queue_head_t wait, int_wait;            /* Where to sleep if busy */
 #endif
   struct audio_info perchip_info;
 
index de9321d408fc1545164d8ff1e2df6853afa77355..7f2bf172f02419770631a8abcde5b96d1eb23658 100644 (file)
@@ -81,7 +81,7 @@ struct inst {
       unsigned char repeat_byte;
 
       /* These members manage timeouts for programmed delays */
-      struct wait_queue *wait_queue;
+      wait_queue_head_t wait_queue;
       struct timer_list timer_list;
 };
 
index ef19f74b9d565554998a929d13cf6f5d6e979a39..673b820c8595a1aefaaf25d3f7498ceb3add519f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: pcikbd.c,v 1.27 1999/05/09 06:40:47 ecd Exp $
+/* $Id: pcikbd.c,v 1.28 1999/05/12 11:15:05 davem Exp $
  * pcikbd.c: Ultra/AX PC keyboard support.
  *
  * Copyright (C) 1997  Eddie C. Dost  (ecd@skynet.be)
@@ -588,7 +588,7 @@ static unsigned int pcimouse_irq;
 struct aux_queue {
        unsigned long head;
        unsigned long tail;
-       struct wait_queue *proc_list;
+       wait_queue_head_t proc_list;
        struct fasync_struct *fasync;
        unsigned char buf[AUX_BUF_SIZE];
 };
@@ -739,7 +739,7 @@ static void aux_write_cmd(int val)
  * doing so might cause the keyboard driver to ignore all incoming keystrokes.
  */
 
-static struct semaphore aux_sema4 = MUTEX;
+static DECLARE_MUTEX(aux_sema4);
 
 static inline void aux_start_atomic(void)
 {
@@ -879,7 +879,7 @@ static ssize_t aux_write(struct file * file, const char * buffer,
 static ssize_t aux_read(struct file * file, char * buffer,
                        size_t count, loff_t *ppos)
 {
-       struct wait_queue wait = { current, NULL };
+       DECLARE_WAITQUEUE(wait, current);
        ssize_t i = count;
        unsigned char c;
 
index bbbd7c67040f1eea23291c61bfd53e09d98fe518..82c7e61e06e9c2fb17359f96a2c4573f356b17a6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sab82532.c,v 1.30 1999/03/24 11:34:52 davem Exp $
+/* $Id: sab82532.c,v 1.31 1999/05/12 11:15:10 davem Exp $
  * sab82532.c: ASYNC Driver for the SIEMENS SAB82532 DUSCC.
  *
  * Copyright (C) 1997  Eddie C. Dost  (ecd@skynet.be)
@@ -100,7 +100,7 @@ static char serial_version[16];
  * memory if large numbers of serial ports are open.
  */
 static unsigned char *tmp_buf = 0;
-static struct semaphore tmp_buf_sem = MUTEX;
+static DECLARE_MUTEX(tmp_buf_sem);
 
 static inline int serial_paranoia_check(struct sab82532 *info,
                                        kdev_t device, const char *routine)
@@ -1715,7 +1715,7 @@ static void sab82532_hangup(struct tty_struct *tty)
 static int block_til_ready(struct tty_struct *tty, struct file * filp,
                           struct sab82532 *info)
 {
-       struct wait_queue wait = { current, NULL };
+       DECLARE_WAITQUEUE(wait, current);
        int retval;
        int do_clocal = 0;
 
@@ -2136,7 +2136,7 @@ sab82532_kgdb_hook(int line))
 
 __initfunc(static inline void show_serial_version(void))
 {
-       char *revision = "$Revision: 1.30 $";
+       char *revision = "$Revision: 1.31 $";
        char *version, *p;
 
        version = strchr(revision, ' ');
@@ -2247,9 +2247,9 @@ __initfunc(int sab82532_init(void))
                info->tqueue_hangup.data = info;
                info->callout_termios = callout_driver.init_termios;
                info->normal_termios = serial_driver.init_termios;
-               info->open_wait = 0;
-               info->close_wait = 0;
-               info->delta_msr_wait = 0;
+               init_waitqueue_head(&info->open_wait);
+               init_waitqueue_head(&info->close_wait);
+               init_waitqueue_head(&info->delta_msr_wait);
                info->icount.cts = info->icount.dsr = 
                        info->icount.rng = info->icount.dcd = 0;
                info->icount.rx = info->icount.tx = 0;
index 70e4f36579582af34fd13a09512d3ece24a85ab1..5c2d38f72c67378f9576615d0ae8dcc0b75e8d8b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: su.c,v 1.18 1999/01/02 16:47:37 davem Exp $
+/* $Id: su.c,v 1.19 1999/05/12 11:15:14 davem Exp $
  * su.c: Small serial driver for keyboard/mouse interface on sparc32/PCI
  *
  * Copyright (C) 1997  Eddie C. Dost  (ecd@skynet.be)
@@ -135,9 +135,9 @@ struct su_struct {
        int                     xmit_tail;
        int                     xmit_cnt;
        struct tq_struct        tqueue;
-       struct wait_queue       *open_wait;
-       struct wait_queue       *close_wait;
-       struct wait_queue       *delta_msr_wait;
+       wait_queue_head_t       open_wait;
+       wait_queue_head_t       close_wait;
+       wait_queue_head_t       delta_msr_wait;
 
        int                     count;
        struct async_icount     icount;
@@ -200,7 +200,7 @@ static struct termios *serial_termios_locked[NR_PORTS];
  * memory if large numbers of serial ports are open.
  */
 static unsigned char *tmp_buf;
-static struct semaphore tmp_buf_sem = MUTEX;
+static DECLARE_MUTEX(tmp_buf_sem);
 
 static inline int serial_paranoia_check(struct su_struct *info,
                                        kdev_t device, const char *routine)
@@ -1878,7 +1878,7 @@ static int
 block_til_ready(struct tty_struct *tty, struct file * filp,
                struct su_struct *info)
 {
-       struct wait_queue wait = { current, NULL };
+       DECLARE_WAITQUEUE(wait, current);
        int               retval;
        int               do_clocal = 0, extra_count = 0;
        unsigned long     flags;
@@ -2215,7 +2215,7 @@ done:
  */
 __initfunc(static __inline__ void show_su_version(void))
 {
-       char *revision = "$Revision: 1.18 $";
+       char *revision = "$Revision: 1.19 $";
        char *version, *p;
 
        version = strchr(revision, ' ');
index 41ffe915981c6e67ff866f3f0a5d04835e0a4d06..7a403a3dae99f69b39d7f001e16143556f86607c 100644 (file)
@@ -85,7 +85,7 @@ void kbd_reset_setup(char *str, int *ints)
 }
 
 #ifndef CONFIG_PCI
-struct wait_queue * keypress_wait = NULL;
+DECLARE_WAIT_QUEUE_HEAD(keypress_wait);
 #endif
 
 int keyboard_wait_for_keypress(struct console *co)
@@ -1261,7 +1261,7 @@ static Firm_event kbd_queue [KBD_QSIZE];
 static int kbd_head, kbd_tail;
 char kbd_opened;
 static int kbd_active = 0;
-static struct wait_queue *kbd_wait;
+static DECLARE_WAIT_QUEUE_HEAD(kbd_wait);
 static struct fasync_struct *kb_fasync;
 
 void
@@ -1285,7 +1285,7 @@ push_kbd (int scan)
 static ssize_t
 kbd_read (struct file *f, char *buffer, size_t count, loff_t *ppos)
 {
-       struct wait_queue wait = { current, NULL };
+       DECLARE_WAITQUEUE(wait, current);
        char *end, *p;
 
        /* Return EWOULDBLOCK, because this is what the X server expects */
index 8547e47ddb456d5859112c61186f9f79dd55e4ed..1c71ea53c12f3a86d85f0c26edd9a4eb3898c23a 100644 (file)
@@ -73,7 +73,7 @@ struct sun_mouse {
        int ready;                     /* set if there if data is available */
        int active;                    /* set if device is open */
         int vuid_mode;                /* VUID_NATIVE or VUID_FIRM_EVENT */
-       struct wait_queue *proc_list;
+       wait_queue_head_t proc_list;
        struct fasync_struct *fasync;
        
        /* The event/stream queue */
@@ -368,7 +368,7 @@ static ssize_t
 sun_mouse_read(struct file *file, char *buffer,
               size_t count, loff_t *ppos)
 {
-       struct wait_queue wait = { current, NULL };
+       DECLARE_WAITQUEUE(wait, current);
 
        if (queue_empty ()){
                if (file->f_flags & O_NONBLOCK)
@@ -503,7 +503,7 @@ __initfunc(int sun_mouse_init(void))
        misc_register (&sun_mouse_mouse);
        sunmouse.delta_x = sunmouse.delta_y = 0;
        sunmouse.button_state = 0x80;
-       sunmouse.proc_list = NULL;
+       init_waitqueue_head(&sunmouse.proc_list);
        sunmouse.byte = 69;
        return 0;
 }
index 72a883cfc792279a5eb450f8bd17fe892f1a290e..b9ed039ce59d74079c93f892cb95eb2066664b90 100644 (file)
@@ -128,7 +128,7 @@ struct vfc_dev {
        unsigned int control_reg;
        struct semaphore device_lock_sem;
        struct timer_list poll_timer;
-       struct wait_queue *poll_wait;
+       wait_queue_head_t poll_wait;
        int instance;
        int busy;
        unsigned long which_io;
index 9195f5a0e03643fa3b0278d1f266f5579ceca1fc..977161435008166153e46c9191ebd3d1b2743b47 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zs.c,v 1.41 1999/04/16 16:22:27 jj Exp $
+/* $Id: zs.c,v 1.42 1999/05/12 11:15:26 davem Exp $
  * zs.c: Zilog serial port driver for the Sparc.
  *
  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -174,7 +174,7 @@ static struct termios **serial_termios_locked;
  * memory if large numbers of serial ports are open.
  */
 static unsigned char tmp_buf[4096]; /* This is cheating */
-static struct semaphore tmp_buf_sem = MUTEX;
+static DECLARE_MUTEX(tmp_buf_sem);
 
 static inline int serial_paranoia_check(struct sun_serial *info,
                                        dev_t device, const char *routine)
@@ -1628,7 +1628,7 @@ void zs_hangup(struct tty_struct *tty)
 static int block_til_ready(struct tty_struct *tty, struct file * filp,
                           struct sun_serial *info)
 {
-       struct wait_queue wait = { current, NULL };
+       DECLARE_WAITQUEUE(wait, current);
        int             retval;
        int             do_clocal = 0;
        unsigned char   r0;
@@ -1844,7 +1844,7 @@ int zs_open(struct tty_struct *tty, struct file * filp)
 
 static void show_serial_version(void)
 {
-       char *revision = "$Revision: 1.41 $";
+       char *revision = "$Revision: 1.42 $";
        char *version, *p;
 
        version = strchr(revision, ' ');
@@ -2517,8 +2517,8 @@ __initfunc(int zs_init(void))
                info->tqueue_hangup.data = info;
                info->callout_termios = callout_driver.init_termios;
                info->normal_termios = serial_driver.init_termios;
-               info->open_wait = 0;
-               info->close_wait = 0;
+               init_waitqueue_head(&info->open_wait);
+               init_waitqueue_head(&info->close_wait);
                printk("tty%02d at 0x%04x (irq = %s)", info->line, 
                       info->port, __irq_itoa(info->irq));
                printk(" is a Zilog8530\n");
index fd28e4cede801d21f004bf662ada6ceb193f1a3c..6bf9a11d82fe26425d03925057db822209047370 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zs.h,v 1.1 1997/08/28 02:23:45 ecd Exp $
+/* $Id: zs.h,v 1.2 1999/05/12 11:15:31 davem Exp $
  * zs.h: Definitions for the Sparc Zilog serial driver.
  *
  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -151,8 +151,8 @@ struct sun_serial {
        struct tq_struct        tqueue_hangup;
        struct termios          normal_termios;
        struct termios          callout_termios;
-       struct wait_queue       *open_wait;
-       struct wait_queue       *close_wait;
+       wait_queue_head_t       open_wait;
+       wait_queue_head_t       close_wait;
 };
 
 
index 09cfbeb876e1add7d325728fa2df55e50b82efa3..4749d152fe302cc961d9e338661fb682045c2c8c 100644 (file)
@@ -54,7 +54,7 @@ static struct ctrl_inquiry {
 static int fcscount __initdata = 0;
 static atomic_t fcss __initdata = ATOMIC_INIT(0);
 static struct timer_list fc_timer __initdata = { 0 };
-struct semaphore fc_sem __initdata = MUTEX_LOCKED;
+DECLARE_MUTEX_LOCKED(fc_sem);
 
 static int pluto_encode_addr(Scsi_Cmnd *SCpnt, u16 *addr, fc_channel *fc, fcp_cmnd *fcmd);
 
index a252cb46b5e0f1ba5b9a45534468ac447b9baf93..b58c8802c56a47e31539eaa59cbd5d6e904696b8 100644 (file)
@@ -361,6 +361,7 @@ int init_coda_psdev(void)
        }
        memset(&coda_upc_comm, 0, sizeof(coda_upc_comm));
        memset(&coda_super_info, 0, sizeof(coda_super_info));
+       init_waitqueue_head(&coda_upc_comm.vc_waitq);
 
        coda_sysctl_init();
 
index 339bcb6f601467d7487469089b8f7ee659ba9e18..1d87d3782864c4112868282eb5fc4c03e05329bc 100644 (file)
@@ -464,7 +464,7 @@ fat_read_super(struct super_block *sb, void *data, int silent)
 
        sb->s_magic = MSDOS_SUPER_MAGIC;
        /* set up enough so that it can read an inode */
-       MSDOS_SB(sb)->fat_wait = NULL;
+       init_waitqueue_head(&MSDOS_SB(sb)->fat_wait);
        MSDOS_SB(sb)->fat_lock = 0;
        MSDOS_SB(sb)->prev_free = 0;
 
index 1afee6c7e98cfecc83a073793a95d404965bb9c0..f7d4765c9e0aea227d82d93389afe019f1fe48ed 100644 (file)
@@ -57,7 +57,7 @@ extern int ncp_symlink(struct inode*, struct dentry*, const char*);
 #endif
 
 static struct nw_file_info *read_nwinfo = NULL;
-static struct semaphore read_sem = MUTEX;
+static DECLARE_MUTEX(read_sem);
 
 /*
  * Fill in the ncpfs-specific information in the inode.
@@ -350,7 +350,7 @@ ncp_read_super(struct super_block *sb, void *raw_data, int silent)
 
        server->ncp_filp = ncp_filp;
        server->lock = 0;
-       server->wait = NULL;
+       init_waitqueue_head(&server->wait);
        server->packet = NULL;
        server->buffer_size = 0;
        server->conn_status = 0;
@@ -723,7 +723,7 @@ int init_module(void)
 {
        DPRINTK(KERN_DEBUG "ncpfs: init_module called\n");
 
-       read_sem = MUTEX;
+       init_MUTEX(&read_sem);
        read_nwinfo = NULL;
 
 #ifdef DEBUG_NCP_MALLOC
index 1a278911ab55e2a65597a2dc151475d3473ce7bd..35f5fd2eff73d739bdc3f8d06073234be21f25f7 100644 (file)
@@ -68,7 +68,7 @@ smb_invent_inos(unsigned long n)
 }
 
 static struct smb_fattr *read_fattr = NULL;
-static struct semaphore read_semaphore = MUTEX;
+static DECLARE_MUTEX(read_semaphore);
 
 struct inode *
 smb_iget(struct super_block *sb, struct smb_fattr *fattr)
@@ -362,8 +362,8 @@ smb_read_super(struct super_block *sb, void *raw_data, int silent)
        sb->s_op = &smb_sops;
 
        sb->u.smbfs_sb.sock_file = NULL;
-       sb->u.smbfs_sb.sem = MUTEX;
-       sb->u.smbfs_sb.wait = NULL;
+       init_MUTEX(&sb->u.smbfs_sb.sem);
+       init_waitqueue_head(&sb->u.smbfs_sb.wait);
        sb->u.smbfs_sb.conn_pid = 0;
        sb->u.smbfs_sb.state = CONN_INVALID; /* no connection yet */
        sb->u.smbfs_sb.generation = 0;
@@ -609,7 +609,7 @@ init_module(void)
        smb_current_vmalloced = 0;
 #endif
 
-       read_semaphore = MUTEX;
+       init_MUTEX(&read_semaphore);
 
        return init_smb_fs();
 }
index 87384b8ae4ed8dbdfd3f547eac8a72790c5b6c54..8cc546aac4fe7c140ed98264ad72949ed24d3e7d 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _M68K_PAGE_H
 #define _M68K_PAGE_H
 
+#include <linux/config.h>
+
 /* PAGE_SHIFT determines the page size */
 #define PAGE_SHIFT     12
 #define PAGE_SIZE      (1UL << PAGE_SHIFT)
index e3712d2e1804de2529f5d1652306c0df8363372f..9083bc1ec21510366621e1aaebe3e6fad4917f50 100644 (file)
@@ -9,10 +9,6 @@
  */
 
 
-#include <linux/config.h> /* CONFIG_MAGIC_SYSRQ */
-
-
-
 #ifdef __KERNEL__
 
 
index 5e3abe0b5bec03627283903224dcb57831124df1..0ae0b97059fe9e2b396086c7e9b3fb394515892a 100644 (file)
@@ -9,6 +9,8 @@
  * m68k version by Andreas Schwab
  */
 
+#include <linux/config.h>
+
 /*
  * These two _must_ execute atomically wrt each other.
  */
index 271169bbca57ac2c85a34538b9db085686ec2216..787c273a723a3a4de0e66ef129827b9a80c5df5a 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef _M68K_SEMAPHORE_H
 #define _M68K_SEMAPHORE_H
 
-#include <linux/config.h>
 #include <linux/linkage.h>
 
 #include <asm/system.h>
index c45a7b4a78605c5ced028035b2d6f1714c43ea31..f8ffd64a2aa53ca55292d220e52b001b9242cb73 100644 (file)
 #define AOFF_task_tarray_ptr   0x0000008c
 #define ASIZ_task_tarray_ptr   0x00000004
 #define AOFF_task_wait_chldexit        0x00000090
-#define ASIZ_task_wait_chldexit        0x00000004
-#define AOFF_task_vfork_sem    0x00000094
+#define ASIZ_task_wait_chldexit        0x00000014
+#define AOFF_task_vfork_sem    0x000000a4
 #define ASIZ_task_vfork_sem    0x00000004
-#define AOFF_task_policy       0x00000098
+#define AOFF_task_policy       0x000000a8
 #define ASIZ_task_policy       0x00000004
-#define AOFF_task_rt_priority  0x0000009c
+#define AOFF_task_rt_priority  0x000000ac
 #define ASIZ_task_rt_priority  0x00000004
-#define AOFF_task_it_real_value        0x000000a0
+#define AOFF_task_it_real_value        0x000000b0
 #define ASIZ_task_it_real_value        0x00000004
-#define AOFF_task_it_prof_value        0x000000a4
+#define AOFF_task_it_prof_value        0x000000b4
 #define ASIZ_task_it_prof_value        0x00000004
-#define AOFF_task_it_virt_value        0x000000a8
+#define AOFF_task_it_virt_value        0x000000b8
 #define ASIZ_task_it_virt_value        0x00000004
-#define AOFF_task_it_real_incr 0x000000ac
+#define AOFF_task_it_real_incr 0x000000bc
 #define ASIZ_task_it_real_incr 0x00000004
-#define AOFF_task_it_prof_incr 0x000000b0
+#define AOFF_task_it_prof_incr 0x000000c0
 #define ASIZ_task_it_prof_incr 0x00000004
-#define AOFF_task_it_virt_incr 0x000000b4
+#define AOFF_task_it_virt_incr 0x000000c4
 #define ASIZ_task_it_virt_incr 0x00000004
-#define AOFF_task_real_timer   0x000000b8
+#define AOFF_task_real_timer   0x000000c8
 #define ASIZ_task_real_timer   0x00000014
-#define AOFF_task_times        0x000000cc
+#define AOFF_task_times        0x000000dc
 #define ASIZ_task_times        0x00000010
-#define AOFF_task_start_time   0x000000dc
+#define AOFF_task_start_time   0x000000ec
 #define ASIZ_task_start_time   0x00000004
-#define AOFF_task_per_cpu_utime        0x000000e0
+#define AOFF_task_per_cpu_utime        0x000000f0
 #define ASIZ_task_per_cpu_utime        0x00000004
-#define AOFF_task_min_flt      0x000000e8
+#define AOFF_task_min_flt      0x000000f8
 #define ASIZ_task_min_flt      0x00000004
-#define AOFF_task_maj_flt      0x000000ec
+#define AOFF_task_maj_flt      0x000000fc
 #define ASIZ_task_maj_flt      0x00000004
-#define AOFF_task_nswap        0x000000f0
+#define AOFF_task_nswap        0x00000100
 #define ASIZ_task_nswap        0x00000004
-#define AOFF_task_cmin_flt     0x000000f4
+#define AOFF_task_cmin_flt     0x00000104
 #define ASIZ_task_cmin_flt     0x00000004
-#define AOFF_task_cmaj_flt     0x000000f8
+#define AOFF_task_cmaj_flt     0x00000108
 #define ASIZ_task_cmaj_flt     0x00000004
-#define AOFF_task_cnswap       0x000000fc
+#define AOFF_task_cnswap       0x0000010c
 #define ASIZ_task_cnswap       0x00000004
-#define AOFF_task_uid  0x00000102
+#define AOFF_task_uid  0x00000112
 #define ASIZ_task_uid  0x00000002
-#define AOFF_task_euid 0x00000104
+#define AOFF_task_euid 0x00000114
 #define ASIZ_task_euid 0x00000002
-#define AOFF_task_suid 0x00000106
+#define AOFF_task_suid 0x00000116
 #define ASIZ_task_suid 0x00000002
-#define AOFF_task_fsuid        0x00000108
+#define AOFF_task_fsuid        0x00000118
 #define ASIZ_task_fsuid        0x00000002
-#define AOFF_task_gid  0x0000010a
+#define AOFF_task_gid  0x0000011a
 #define ASIZ_task_gid  0x00000002
-#define AOFF_task_egid 0x0000010c
+#define AOFF_task_egid 0x0000011c
 #define ASIZ_task_egid 0x00000002
-#define AOFF_task_sgid 0x0000010e
+#define AOFF_task_sgid 0x0000011e
 #define ASIZ_task_sgid 0x00000002
-#define AOFF_task_fsgid        0x00000110
+#define AOFF_task_fsgid        0x00000120
 #define ASIZ_task_fsgid        0x00000002
-#define AOFF_task_ngroups      0x00000114
+#define AOFF_task_ngroups      0x00000124
 #define ASIZ_task_ngroups      0x00000004
-#define AOFF_task_groups       0x00000118
+#define AOFF_task_groups       0x00000128
 #define ASIZ_task_groups       0x00000040
-#define AOFF_task_cap_effective        0x00000158
+#define AOFF_task_cap_effective        0x00000168
 #define ASIZ_task_cap_effective        0x00000004
-#define AOFF_task_cap_inheritable      0x0000015c
+#define AOFF_task_cap_inheritable      0x0000016c
 #define ASIZ_task_cap_inheritable      0x00000004
-#define AOFF_task_cap_permitted        0x00000160
+#define AOFF_task_cap_permitted        0x00000170
 #define ASIZ_task_cap_permitted        0x00000004
-#define AOFF_task_user 0x00000164
+#define AOFF_task_user 0x00000174
 #define ASIZ_task_user 0x00000004
-#define AOFF_task_rlim 0x00000168
+#define AOFF_task_rlim 0x00000178
 #define ASIZ_task_rlim 0x00000050
-#define AOFF_task_used_math    0x000001b8
+#define AOFF_task_used_math    0x000001c8
 #define ASIZ_task_used_math    0x00000002
-#define AOFF_task_comm 0x000001ba
+#define AOFF_task_comm 0x000001ca
 #define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count   0x000001cc
+#define AOFF_task_link_count   0x000001dc
 #define ASIZ_task_link_count   0x00000004
-#define AOFF_task_tty  0x000001d0
+#define AOFF_task_tty  0x000001e0
 #define ASIZ_task_tty  0x00000004
-#define AOFF_task_semundo      0x000001d4
+#define AOFF_task_semundo      0x000001e4
 #define ASIZ_task_semundo      0x00000004
-#define AOFF_task_semsleeping  0x000001d8
+#define AOFF_task_semsleeping  0x000001e8
 #define ASIZ_task_semsleeping  0x00000004
-#define AOFF_task_tss  0x000001e0
+#define AOFF_task_tss  0x000001f0
 #define ASIZ_task_tss  0x00000388
-#define AOFF_task_fs   0x00000568
+#define AOFF_task_fs   0x00000578
 #define ASIZ_task_fs   0x00000004
-#define AOFF_task_files        0x0000056c
+#define AOFF_task_files        0x0000057c
 #define ASIZ_task_files        0x00000004
-#define AOFF_task_mm   0x00000570
+#define AOFF_task_mm   0x00000580
 #define ASIZ_task_mm   0x00000004
-#define AOFF_task_sigmask_lock 0x00000574
+#define AOFF_task_sigmask_lock 0x00000584
 #define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig  0x00000578
+#define AOFF_task_sig  0x00000588
 #define ASIZ_task_sig  0x00000004
-#define AOFF_task_signal       0x0000057c
+#define AOFF_task_signal       0x0000058c
 #define ASIZ_task_signal       0x00000008
-#define AOFF_task_blocked      0x00000584
+#define AOFF_task_blocked      0x00000594
 #define ASIZ_task_blocked      0x00000008
-#define AOFF_task_sigqueue     0x0000058c
+#define AOFF_task_sigqueue     0x0000059c
 #define ASIZ_task_sigqueue     0x00000004
-#define AOFF_task_sigqueue_tail        0x00000590
+#define AOFF_task_sigqueue_tail        0x000005a0
 #define ASIZ_task_sigqueue_tail        0x00000004
-#define AOFF_task_sas_ss_sp    0x00000594
+#define AOFF_task_sas_ss_sp    0x000005a4
 #define ASIZ_task_sas_ss_sp    0x00000004
-#define AOFF_task_sas_ss_size  0x00000598
+#define AOFF_task_sas_ss_size  0x000005a8
 #define ASIZ_task_sas_ss_size  0x00000004
 #define AOFF_mm_mmap   0x00000000
 #define ASIZ_mm_mmap   0x00000004
 #define AOFF_mm_map_count      0x00000014
 #define ASIZ_mm_map_count      0x00000004
 #define AOFF_mm_mmap_sem       0x00000018
-#define ASIZ_mm_mmap_sem       0x0000000c
-#define AOFF_mm_context        0x00000024
+#define ASIZ_mm_mmap_sem       0x00000020
+#define AOFF_mm_context        0x00000038
 #define ASIZ_mm_context        0x00000004
-#define AOFF_mm_start_code     0x00000028
+#define AOFF_mm_start_code     0x0000003c
 #define ASIZ_mm_start_code     0x00000004
-#define AOFF_mm_end_code       0x0000002c
+#define AOFF_mm_end_code       0x00000040
 #define ASIZ_mm_end_code       0x00000004
-#define AOFF_mm_start_data     0x00000030
+#define AOFF_mm_start_data     0x00000044
 #define ASIZ_mm_start_data     0x00000004
-#define AOFF_mm_end_data       0x00000034
+#define AOFF_mm_end_data       0x00000048
 #define ASIZ_mm_end_data       0x00000004
-#define AOFF_mm_start_brk      0x00000038
+#define AOFF_mm_start_brk      0x0000004c
 #define ASIZ_mm_start_brk      0x00000004
-#define AOFF_mm_brk    0x0000003c
+#define AOFF_mm_brk    0x00000050
 #define ASIZ_mm_brk    0x00000004
-#define AOFF_mm_start_stack    0x00000040
+#define AOFF_mm_start_stack    0x00000054
 #define ASIZ_mm_start_stack    0x00000004
-#define AOFF_mm_arg_start      0x00000044
+#define AOFF_mm_arg_start      0x00000058
 #define ASIZ_mm_arg_start      0x00000004
-#define AOFF_mm_arg_end        0x00000048
+#define AOFF_mm_arg_end        0x0000005c
 #define ASIZ_mm_arg_end        0x00000004
-#define AOFF_mm_env_start      0x0000004c
+#define AOFF_mm_env_start      0x00000060
 #define ASIZ_mm_env_start      0x00000004
-#define AOFF_mm_env_end        0x00000050
+#define AOFF_mm_env_end        0x00000064
 #define ASIZ_mm_env_end        0x00000004
-#define AOFF_mm_rss    0x00000054
+#define AOFF_mm_rss    0x00000068
 #define ASIZ_mm_rss    0x00000004
-#define AOFF_mm_total_vm       0x00000058
+#define AOFF_mm_total_vm       0x0000006c
 #define ASIZ_mm_total_vm       0x00000004
-#define AOFF_mm_locked_vm      0x0000005c
+#define AOFF_mm_locked_vm      0x00000070
 #define ASIZ_mm_locked_vm      0x00000004
-#define AOFF_mm_def_flags      0x00000060
+#define AOFF_mm_def_flags      0x00000074
 #define ASIZ_mm_def_flags      0x00000004
-#define AOFF_mm_cpu_vm_mask    0x00000064
+#define AOFF_mm_cpu_vm_mask    0x00000078
 #define ASIZ_mm_cpu_vm_mask    0x00000004
-#define AOFF_mm_swap_cnt       0x00000068
+#define AOFF_mm_swap_cnt       0x0000007c
 #define ASIZ_mm_swap_cnt       0x00000004
-#define AOFF_mm_swap_address   0x0000006c
+#define AOFF_mm_swap_address   0x00000080
 #define ASIZ_mm_swap_address   0x00000004
-#define AOFF_mm_segments       0x00000070
+#define AOFF_mm_segments       0x00000084
 #define ASIZ_mm_segments       0x00000004
 #define AOFF_thread_uwinmask   0x00000000
 #define ASIZ_thread_uwinmask   0x00000004
 #define AOFF_task_tarray_ptr   0x0000008c
 #define ASIZ_task_tarray_ptr   0x00000004
 #define AOFF_task_wait_chldexit        0x00000090
-#define ASIZ_task_wait_chldexit        0x00000004
-#define AOFF_task_vfork_sem    0x00000094
+#define ASIZ_task_wait_chldexit        0x00000018
+#define AOFF_task_vfork_sem    0x000000a8
 #define ASIZ_task_vfork_sem    0x00000004
-#define AOFF_task_policy       0x00000098
+#define AOFF_task_policy       0x000000ac
 #define ASIZ_task_policy       0x00000004
-#define AOFF_task_rt_priority  0x0000009c
+#define AOFF_task_rt_priority  0x000000b0
 #define ASIZ_task_rt_priority  0x00000004
-#define AOFF_task_it_real_value        0x000000a0
+#define AOFF_task_it_real_value        0x000000b4
 #define ASIZ_task_it_real_value        0x00000004
-#define AOFF_task_it_prof_value        0x000000a4
+#define AOFF_task_it_prof_value        0x000000b8
 #define ASIZ_task_it_prof_value        0x00000004
-#define AOFF_task_it_virt_value        0x000000a8
+#define AOFF_task_it_virt_value        0x000000bc
 #define ASIZ_task_it_virt_value        0x00000004
-#define AOFF_task_it_real_incr 0x000000ac
+#define AOFF_task_it_real_incr 0x000000c0
 #define ASIZ_task_it_real_incr 0x00000004
-#define AOFF_task_it_prof_incr 0x000000b0
+#define AOFF_task_it_prof_incr 0x000000c4
 #define ASIZ_task_it_prof_incr 0x00000004
-#define AOFF_task_it_virt_incr 0x000000b4
+#define AOFF_task_it_virt_incr 0x000000c8
 #define ASIZ_task_it_virt_incr 0x00000004
-#define AOFF_task_real_timer   0x000000b8
+#define AOFF_task_real_timer   0x000000cc
 #define ASIZ_task_real_timer   0x00000014
-#define AOFF_task_times        0x000000cc
+#define AOFF_task_times        0x000000e0
 #define ASIZ_task_times        0x00000010
-#define AOFF_task_start_time   0x000000dc
+#define AOFF_task_start_time   0x000000f0
 #define ASIZ_task_start_time   0x00000004
-#define AOFF_task_per_cpu_utime        0x000000e0
+#define AOFF_task_per_cpu_utime        0x000000f4
 #define ASIZ_task_per_cpu_utime        0x00000080
-#define AOFF_task_min_flt      0x000001e0
+#define AOFF_task_min_flt      0x000001f4
 #define ASIZ_task_min_flt      0x00000004
-#define AOFF_task_maj_flt      0x000001e4
+#define AOFF_task_maj_flt      0x000001f8
 #define ASIZ_task_maj_flt      0x00000004
-#define AOFF_task_nswap        0x000001e8
+#define AOFF_task_nswap        0x000001fc
 #define ASIZ_task_nswap        0x00000004
-#define AOFF_task_cmin_flt     0x000001ec
+#define AOFF_task_cmin_flt     0x00000200
 #define ASIZ_task_cmin_flt     0x00000004
-#define AOFF_task_cmaj_flt     0x000001f0
+#define AOFF_task_cmaj_flt     0x00000204
 #define ASIZ_task_cmaj_flt     0x00000004
-#define AOFF_task_cnswap       0x000001f4
+#define AOFF_task_cnswap       0x00000208
 #define ASIZ_task_cnswap       0x00000004
-#define AOFF_task_uid  0x000001fa
+#define AOFF_task_uid  0x0000020e
 #define ASIZ_task_uid  0x00000002
-#define AOFF_task_euid 0x000001fc
+#define AOFF_task_euid 0x00000210
 #define ASIZ_task_euid 0x00000002
-#define AOFF_task_suid 0x000001fe
+#define AOFF_task_suid 0x00000212
 #define ASIZ_task_suid 0x00000002
-#define AOFF_task_fsuid        0x00000200
+#define AOFF_task_fsuid        0x00000214
 #define ASIZ_task_fsuid        0x00000002
-#define AOFF_task_gid  0x00000202
+#define AOFF_task_gid  0x00000216
 #define ASIZ_task_gid  0x00000002
-#define AOFF_task_egid 0x00000204
+#define AOFF_task_egid 0x00000218
 #define ASIZ_task_egid 0x00000002
-#define AOFF_task_sgid 0x00000206
+#define AOFF_task_sgid 0x0000021a
 #define ASIZ_task_sgid 0x00000002
-#define AOFF_task_fsgid        0x00000208
+#define AOFF_task_fsgid        0x0000021c
 #define ASIZ_task_fsgid        0x00000002
-#define AOFF_task_ngroups      0x0000020c
+#define AOFF_task_ngroups      0x00000220
 #define ASIZ_task_ngroups      0x00000004
-#define AOFF_task_groups       0x00000210
+#define AOFF_task_groups       0x00000224
 #define ASIZ_task_groups       0x00000040
-#define AOFF_task_cap_effective        0x00000250
+#define AOFF_task_cap_effective        0x00000264
 #define ASIZ_task_cap_effective        0x00000004
-#define AOFF_task_cap_inheritable      0x00000254
+#define AOFF_task_cap_inheritable      0x00000268
 #define ASIZ_task_cap_inheritable      0x00000004
-#define AOFF_task_cap_permitted        0x00000258
+#define AOFF_task_cap_permitted        0x0000026c
 #define ASIZ_task_cap_permitted        0x00000004
-#define AOFF_task_user 0x0000025c
+#define AOFF_task_user 0x00000270
 #define ASIZ_task_user 0x00000004
-#define AOFF_task_rlim 0x00000260
+#define AOFF_task_rlim 0x00000274
 #define ASIZ_task_rlim 0x00000050
-#define AOFF_task_used_math    0x000002b0
+#define AOFF_task_used_math    0x000002c4
 #define ASIZ_task_used_math    0x00000002
-#define AOFF_task_comm 0x000002b2
+#define AOFF_task_comm 0x000002c6
 #define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count   0x000002c4
+#define AOFF_task_link_count   0x000002d8
 #define ASIZ_task_link_count   0x00000004
-#define AOFF_task_tty  0x000002c8
+#define AOFF_task_tty  0x000002dc
 #define ASIZ_task_tty  0x00000004
-#define AOFF_task_semundo      0x000002cc
+#define AOFF_task_semundo      0x000002e0
 #define ASIZ_task_semundo      0x00000004
-#define AOFF_task_semsleeping  0x000002d0
+#define AOFF_task_semsleeping  0x000002e4
 #define ASIZ_task_semsleeping  0x00000004
-#define AOFF_task_tss  0x000002d8
+#define AOFF_task_tss  0x000002e8
 #define ASIZ_task_tss  0x00000388
-#define AOFF_task_fs   0x00000660
+#define AOFF_task_fs   0x00000670
 #define ASIZ_task_fs   0x00000004
-#define AOFF_task_files        0x00000664
+#define AOFF_task_files        0x00000674
 #define ASIZ_task_files        0x00000004
-#define AOFF_task_mm   0x00000668
+#define AOFF_task_mm   0x00000678
 #define ASIZ_task_mm   0x00000004
-#define AOFF_task_sigmask_lock 0x0000066c
+#define AOFF_task_sigmask_lock 0x0000067c
 #define ASIZ_task_sigmask_lock 0x00000008
-#define AOFF_task_sig  0x00000674
+#define AOFF_task_sig  0x00000684
 #define ASIZ_task_sig  0x00000004
-#define AOFF_task_signal       0x00000678
+#define AOFF_task_signal       0x00000688
 #define ASIZ_task_signal       0x00000008
-#define AOFF_task_blocked      0x00000680
+#define AOFF_task_blocked      0x00000690
 #define ASIZ_task_blocked      0x00000008
-#define AOFF_task_sigqueue     0x00000688
+#define AOFF_task_sigqueue     0x00000698
 #define ASIZ_task_sigqueue     0x00000004
-#define AOFF_task_sigqueue_tail        0x0000068c
+#define AOFF_task_sigqueue_tail        0x0000069c
 #define ASIZ_task_sigqueue_tail        0x00000004
-#define AOFF_task_sas_ss_sp    0x00000690
+#define AOFF_task_sas_ss_sp    0x000006a0
 #define ASIZ_task_sas_ss_sp    0x00000004
-#define AOFF_task_sas_ss_size  0x00000694
+#define AOFF_task_sas_ss_size  0x000006a4
 #define ASIZ_task_sas_ss_size  0x00000004
 #define AOFF_mm_mmap   0x00000000
 #define ASIZ_mm_mmap   0x00000004
 #define AOFF_mm_map_count      0x00000014
 #define ASIZ_mm_map_count      0x00000004
 #define AOFF_mm_mmap_sem       0x00000018
-#define ASIZ_mm_mmap_sem       0x0000000c
-#define AOFF_mm_context        0x00000024
+#define ASIZ_mm_mmap_sem       0x00000024
+#define AOFF_mm_context        0x0000003c
 #define ASIZ_mm_context        0x00000004
-#define AOFF_mm_start_code     0x00000028
+#define AOFF_mm_start_code     0x00000040
 #define ASIZ_mm_start_code     0x00000004
-#define AOFF_mm_end_code       0x0000002c
+#define AOFF_mm_end_code       0x00000044
 #define ASIZ_mm_end_code       0x00000004
-#define AOFF_mm_start_data     0x00000030
+#define AOFF_mm_start_data     0x00000048
 #define ASIZ_mm_start_data     0x00000004
-#define AOFF_mm_end_data       0x00000034
+#define AOFF_mm_end_data       0x0000004c
 #define ASIZ_mm_end_data       0x00000004
-#define AOFF_mm_start_brk      0x00000038
+#define AOFF_mm_start_brk      0x00000050
 #define ASIZ_mm_start_brk      0x00000004
-#define AOFF_mm_brk    0x0000003c
+#define AOFF_mm_brk    0x00000054
 #define ASIZ_mm_brk    0x00000004
-#define AOFF_mm_start_stack    0x00000040
+#define AOFF_mm_start_stack    0x00000058
 #define ASIZ_mm_start_stack    0x00000004
-#define AOFF_mm_arg_start      0x00000044
+#define AOFF_mm_arg_start      0x0000005c
 #define ASIZ_mm_arg_start      0x00000004
-#define AOFF_mm_arg_end        0x00000048
+#define AOFF_mm_arg_end        0x00000060
 #define ASIZ_mm_arg_end        0x00000004
-#define AOFF_mm_env_start      0x0000004c
+#define AOFF_mm_env_start      0x00000064
 #define ASIZ_mm_env_start      0x00000004
-#define AOFF_mm_env_end        0x00000050
+#define AOFF_mm_env_end        0x00000068
 #define ASIZ_mm_env_end        0x00000004
-#define AOFF_mm_rss    0x00000054
+#define AOFF_mm_rss    0x0000006c
 #define ASIZ_mm_rss    0x00000004
-#define AOFF_mm_total_vm       0x00000058
+#define AOFF_mm_total_vm       0x00000070
 #define ASIZ_mm_total_vm       0x00000004
-#define AOFF_mm_locked_vm      0x0000005c
+#define AOFF_mm_locked_vm      0x00000074
 #define ASIZ_mm_locked_vm      0x00000004
-#define AOFF_mm_def_flags      0x00000060
+#define AOFF_mm_def_flags      0x00000078
 #define ASIZ_mm_def_flags      0x00000004
-#define AOFF_mm_cpu_vm_mask    0x00000064
+#define AOFF_mm_cpu_vm_mask    0x0000007c
 #define ASIZ_mm_cpu_vm_mask    0x00000004
-#define AOFF_mm_swap_cnt       0x00000068
+#define AOFF_mm_swap_cnt       0x00000080
 #define ASIZ_mm_swap_cnt       0x00000004
-#define AOFF_mm_swap_address   0x0000006c
+#define AOFF_mm_swap_address   0x00000084
 #define ASIZ_mm_swap_address   0x00000004
-#define AOFF_mm_segments       0x00000070
+#define AOFF_mm_segments       0x00000088
 #define ASIZ_mm_segments       0x00000004
 #define AOFF_thread_uwinmask   0x00000000
 #define ASIZ_thread_uwinmask   0x00000004
index ca5e06538c1662f2118625223aaa587b87466f25..27543806bd947569983243700e33ef32e1adc6f1 100644 (file)
@@ -275,7 +275,7 @@ struct sparcaudio_driver
         struct linux_sbus_device *dev;
 
        /* Processes blocked on open() sit here. */
-       struct wait_queue *open_wait;
+       wait_queue_head_t open_wait;
 
        /* Task queue for this driver's bottom half. */
        struct tq_struct tqueue;
@@ -288,7 +288,7 @@ struct sparcaudio_driver
        size_t *output_sizes, output_size, output_buffer_size;
        int num_output_buffers, output_front, output_rear, output_offset;
        int output_count, output_active, playing_count, output_eof;
-       struct wait_queue *output_write_wait, *output_drain_wait;
+       wait_queue_head_t output_write_wait, output_drain_wait;
         char *output_notify;
 
         /* Support for a circular queue of input buffers. */
@@ -296,7 +296,7 @@ struct sparcaudio_driver
        size_t *input_sizes, input_size, input_buffer_size;
         int num_input_buffers, input_front, input_rear, input_offset;
         int input_count, input_active, recording_count;
-        struct wait_queue *input_read_wait;
+        wait_queue_head_t input_read_wait;
 
         /* Hack to make it look like we support variable size buffers. */
         int buffer_size;
index 1123c966e837e810e415d45f3bac666faef224bb..9c647a571d066f39ecdc80c368af2c6af49afe8e 100644 (file)
@@ -6,28 +6,71 @@
 #ifdef __KERNEL__
 
 #include <asm/atomic.h>
+#include <linux/wait.h>
 
 struct semaphore {
        atomic_t count;
        atomic_t waking;
-       struct wait_queue * wait;
+       wait_queue_head_t wait;
+#if WAITQUEUE_DEBUG
+       long __magic;
+#endif
 };
 
-#define MUTEX ((struct semaphore) { ATOMIC_INIT(1), ATOMIC_INIT(0), NULL })
-#define MUTEX_LOCKED ((struct semaphore) { ATOMIC_INIT(0), ATOMIC_INIT(0), NULL })
+#if WAITQUEUE_DEBUG
+# define __SEM_DEBUG_INIT(name) \
+               , (long)&(name).__magic
+#else
+# define __SEM_DEBUG_INIT(name)
+#endif
+
+#define __SEMAPHORE_INITIALIZER(name,count) \
+{ ATOMIC_INIT(count), ATOMIC_INIT(0), __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) \
+       __SEM_DEBUG_INIT(name) }
+
+#define __MUTEX_INITIALIZER(name) \
+       __SEMAPHORE_INITIALIZER(name,1)
+
+#define __DECLARE_SEMAPHORE_GENERIC(name,count) \
+       struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
+
+#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
+#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
+
+extern inline void sema_init (struct semaphore *sem, int val)
+{
+       atomic_set(&sem->count, val);
+       atomic_set(&sem->waking, 0);
+       init_waitqueue_head(&sem->wait);
+#if WAITQUEUE_DEBUG
+       sem->__magic = (long)&sem->__magic;
+#endif
+}
+
+static inline void init_MUTEX (struct semaphore *sem)
+{
+       sema_init(sem, 1);
+}
+
+static inline void init_MUTEX_LOCKED (struct semaphore *sem)
+{
+       sema_init(sem, 0);
+}
 
 extern void __down(struct semaphore * sem);
 extern int __down_interruptible(struct semaphore * sem);
 extern int __down_trylock(struct semaphore * sem);
 extern void __up(struct semaphore * sem);
 
-#define sema_init(sem, val)    atomic_set(&((sem)->count), val)
-
 extern inline void down(struct semaphore * sem)
 {
        register atomic_t *ptr asm("g1");
        register int increment asm("g2");
 
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
+
        ptr = (atomic_t *) __atomic_fool_gcc(sem);
        increment = 1;
 
@@ -59,6 +102,10 @@ extern inline int down_interruptible(struct semaphore * sem)
        register atomic_t *ptr asm("g1");
        register int increment asm("g2");
 
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
+
        ptr = (atomic_t *) __atomic_fool_gcc(sem);
        increment = 1;
 
@@ -93,6 +140,10 @@ extern inline int down_trylock(struct semaphore * sem)
        register atomic_t *ptr asm("g1");
        register int increment asm("g2");
 
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
+
        ptr = (atomic_t *) __atomic_fool_gcc(sem);
        increment = 1;
 
@@ -127,6 +178,10 @@ extern inline void up(struct semaphore * sem)
        register atomic_t *ptr asm("g1");
        register int increment asm("g2");
 
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
+
        ptr = (atomic_t *) __atomic_fool_gcc(sem);
        increment = 1;
 
index 3301515c59207c1bf74e5b8a7ecba6651f409202..e1e8355a1f715468558654328b49a501e453420d 100644 (file)
 #define AOFF_task_tarray_ptr   0x000000e8
 #define ASIZ_task_tarray_ptr   0x00000008
 #define AOFF_task_wait_chldexit        0x000000f0
-#define ASIZ_task_wait_chldexit        0x00000008
-#define AOFF_task_vfork_sem    0x000000f8
+#define ASIZ_task_wait_chldexit        0x00000028
+#define AOFF_task_vfork_sem    0x00000118
 #define ASIZ_task_vfork_sem    0x00000008
-#define AOFF_task_policy       0x00000100
+#define AOFF_task_policy       0x00000120
 #define ASIZ_task_policy       0x00000008
-#define AOFF_task_rt_priority  0x00000108
+#define AOFF_task_rt_priority  0x00000128
 #define ASIZ_task_rt_priority  0x00000008
-#define AOFF_task_it_real_value        0x00000110
+#define AOFF_task_it_real_value        0x00000130
 #define ASIZ_task_it_real_value        0x00000008
-#define AOFF_task_it_prof_value        0x00000118
+#define AOFF_task_it_prof_value        0x00000138
 #define ASIZ_task_it_prof_value        0x00000008
-#define AOFF_task_it_virt_value        0x00000120
+#define AOFF_task_it_virt_value        0x00000140
 #define ASIZ_task_it_virt_value        0x00000008
-#define AOFF_task_it_real_incr 0x00000128
+#define AOFF_task_it_real_incr 0x00000148
 #define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000130
+#define AOFF_task_it_prof_incr 0x00000150
 #define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000138
+#define AOFF_task_it_virt_incr 0x00000158
 #define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer   0x00000140
+#define AOFF_task_real_timer   0x00000160
 #define ASIZ_task_real_timer   0x00000028
-#define AOFF_task_times        0x00000168
+#define AOFF_task_times        0x00000188
 #define ASIZ_task_times        0x00000020
-#define AOFF_task_start_time   0x00000188
+#define AOFF_task_start_time   0x000001a8
 #define ASIZ_task_start_time   0x00000008
-#define AOFF_task_per_cpu_utime        0x00000190
+#define AOFF_task_per_cpu_utime        0x000001b0
 #define ASIZ_task_per_cpu_utime        0x00000008
-#define AOFF_task_min_flt      0x000001a0
+#define AOFF_task_min_flt      0x000001c0
 #define ASIZ_task_min_flt      0x00000008
-#define AOFF_task_maj_flt      0x000001a8
+#define AOFF_task_maj_flt      0x000001c8
 #define ASIZ_task_maj_flt      0x00000008
-#define AOFF_task_nswap        0x000001b0
+#define AOFF_task_nswap        0x000001d0
 #define ASIZ_task_nswap        0x00000008
-#define AOFF_task_cmin_flt     0x000001b8
+#define AOFF_task_cmin_flt     0x000001d8
 #define ASIZ_task_cmin_flt     0x00000008
-#define AOFF_task_cmaj_flt     0x000001c0
+#define AOFF_task_cmaj_flt     0x000001e0
 #define ASIZ_task_cmaj_flt     0x00000008
-#define AOFF_task_cnswap       0x000001c8
+#define AOFF_task_cnswap       0x000001e8
 #define ASIZ_task_cnswap       0x00000008
-#define AOFF_task_uid  0x000001d4
+#define AOFF_task_uid  0x000001f4
 #define ASIZ_task_uid  0x00000004
-#define AOFF_task_euid 0x000001d8
+#define AOFF_task_euid 0x000001f8
 #define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000001dc
+#define AOFF_task_suid 0x000001fc
 #define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid        0x000001e0
+#define AOFF_task_fsuid        0x00000200
 #define ASIZ_task_fsuid        0x00000004
-#define AOFF_task_gid  0x000001e4
+#define AOFF_task_gid  0x00000204
 #define ASIZ_task_gid  0x00000004
-#define AOFF_task_egid 0x000001e8
+#define AOFF_task_egid 0x00000208
 #define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000001ec
+#define AOFF_task_sgid 0x0000020c
 #define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid        0x000001f0
+#define AOFF_task_fsgid        0x00000210
 #define ASIZ_task_fsgid        0x00000004
-#define AOFF_task_ngroups      0x000001f4
+#define AOFF_task_ngroups      0x00000214
 #define ASIZ_task_ngroups      0x00000004
-#define AOFF_task_groups       0x000001f8
+#define AOFF_task_groups       0x00000218
 #define ASIZ_task_groups       0x00000080
-#define AOFF_task_cap_effective        0x00000278
+#define AOFF_task_cap_effective        0x00000298
 #define ASIZ_task_cap_effective        0x00000004
-#define AOFF_task_cap_inheritable      0x0000027c
+#define AOFF_task_cap_inheritable      0x0000029c
 #define ASIZ_task_cap_inheritable      0x00000004
-#define AOFF_task_cap_permitted        0x00000280
+#define AOFF_task_cap_permitted        0x000002a0
 #define ASIZ_task_cap_permitted        0x00000004
-#define AOFF_task_user 0x00000288
+#define AOFF_task_user 0x000002a8
 #define ASIZ_task_user 0x00000008
-#define AOFF_task_rlim 0x00000290
+#define AOFF_task_rlim 0x000002b0
 #define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math    0x00000330
+#define AOFF_task_used_math    0x00000350
 #define ASIZ_task_used_math    0x00000002
-#define AOFF_task_comm 0x00000332
+#define AOFF_task_comm 0x00000352
 #define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count   0x00000344
+#define AOFF_task_link_count   0x00000364
 #define ASIZ_task_link_count   0x00000004
-#define AOFF_task_tty  0x00000348
+#define AOFF_task_tty  0x00000368
 #define ASIZ_task_tty  0x00000008
-#define AOFF_task_semundo      0x00000350
+#define AOFF_task_semundo      0x00000370
 #define ASIZ_task_semundo      0x00000008
-#define AOFF_task_semsleeping  0x00000358
+#define AOFF_task_semsleeping  0x00000378
 #define ASIZ_task_semsleeping  0x00000008
-#define AOFF_task_tss  0x00000360
+#define AOFF_task_tss  0x00000380
 #define ASIZ_task_tss  0x00000470
-#define AOFF_task_fs   0x000007d0
+#define AOFF_task_fs   0x000007f0
 #define ASIZ_task_fs   0x00000008
-#define AOFF_task_files        0x000007d8
+#define AOFF_task_files        0x000007f8
 #define ASIZ_task_files        0x00000008
-#define AOFF_task_mm   0x000007e0
+#define AOFF_task_mm   0x00000800
 #define ASIZ_task_mm   0x00000008
-#define AOFF_task_sigmask_lock 0x000007e8
+#define AOFF_task_sigmask_lock 0x00000808
 #define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig  0x000007f0
+#define AOFF_task_sig  0x00000810
 #define ASIZ_task_sig  0x00000008
-#define AOFF_task_signal       0x000007f8
+#define AOFF_task_signal       0x00000818
 #define ASIZ_task_signal       0x00000008
-#define AOFF_task_blocked      0x00000800
+#define AOFF_task_blocked      0x00000820
 #define ASIZ_task_blocked      0x00000008
-#define AOFF_task_sigqueue     0x00000808
+#define AOFF_task_sigqueue     0x00000828
 #define ASIZ_task_sigqueue     0x00000008
-#define AOFF_task_sigqueue_tail        0x00000810
+#define AOFF_task_sigqueue_tail        0x00000830
 #define ASIZ_task_sigqueue_tail        0x00000008
-#define AOFF_task_sas_ss_sp    0x00000818
+#define AOFF_task_sas_ss_sp    0x00000838
 #define ASIZ_task_sas_ss_sp    0x00000008
-#define AOFF_task_sas_ss_size  0x00000820
+#define AOFF_task_sas_ss_size  0x00000840
 #define ASIZ_task_sas_ss_size  0x00000008
-#define ASIZ_task      0x00000830
+#define ASIZ_task      0x00000850
 #define AOFF_mm_mmap   0x00000000
 #define ASIZ_mm_mmap   0x00000008
 #define AOFF_mm_mmap_avl       0x00000008
 #define AOFF_mm_map_count      0x00000024
 #define ASIZ_mm_map_count      0x00000004
 #define AOFF_mm_mmap_sem       0x00000028
-#define ASIZ_mm_mmap_sem       0x00000010
-#define AOFF_mm_context        0x00000038
+#define ASIZ_mm_mmap_sem       0x00000038
+#define AOFF_mm_context        0x00000060
 #define ASIZ_mm_context        0x00000008
-#define AOFF_mm_start_code     0x00000040
+#define AOFF_mm_start_code     0x00000068
 #define ASIZ_mm_start_code     0x00000008
-#define AOFF_mm_end_code       0x00000048
+#define AOFF_mm_end_code       0x00000070
 #define ASIZ_mm_end_code       0x00000008
-#define AOFF_mm_start_data     0x00000050
+#define AOFF_mm_start_data     0x00000078
 #define ASIZ_mm_start_data     0x00000008
-#define AOFF_mm_end_data       0x00000058
+#define AOFF_mm_end_data       0x00000080
 #define ASIZ_mm_end_data       0x00000008
-#define AOFF_mm_start_brk      0x00000060
+#define AOFF_mm_start_brk      0x00000088
 #define ASIZ_mm_start_brk      0x00000008
-#define AOFF_mm_brk    0x00000068
+#define AOFF_mm_brk    0x00000090
 #define ASIZ_mm_brk    0x00000008
-#define AOFF_mm_start_stack    0x00000070
+#define AOFF_mm_start_stack    0x00000098
 #define ASIZ_mm_start_stack    0x00000008
-#define AOFF_mm_arg_start      0x00000078
+#define AOFF_mm_arg_start      0x000000a0
 #define ASIZ_mm_arg_start      0x00000008
-#define AOFF_mm_arg_end        0x00000080
+#define AOFF_mm_arg_end        0x000000a8
 #define ASIZ_mm_arg_end        0x00000008
-#define AOFF_mm_env_start      0x00000088
+#define AOFF_mm_env_start      0x000000b0
 #define ASIZ_mm_env_start      0x00000008
-#define AOFF_mm_env_end        0x00000090
+#define AOFF_mm_env_end        0x000000b8
 #define ASIZ_mm_env_end        0x00000008
-#define AOFF_mm_rss    0x00000098
+#define AOFF_mm_rss    0x000000c0
 #define ASIZ_mm_rss    0x00000008
-#define AOFF_mm_total_vm       0x000000a0
+#define AOFF_mm_total_vm       0x000000c8
 #define ASIZ_mm_total_vm       0x00000008
-#define AOFF_mm_locked_vm      0x000000a8
+#define AOFF_mm_locked_vm      0x000000d0
 #define ASIZ_mm_locked_vm      0x00000008
-#define AOFF_mm_def_flags      0x000000b0
+#define AOFF_mm_def_flags      0x000000d8
 #define ASIZ_mm_def_flags      0x00000008
-#define AOFF_mm_cpu_vm_mask    0x000000b8
+#define AOFF_mm_cpu_vm_mask    0x000000e0
 #define ASIZ_mm_cpu_vm_mask    0x00000008
-#define AOFF_mm_swap_cnt       0x000000c0
+#define AOFF_mm_swap_cnt       0x000000e8
 #define ASIZ_mm_swap_cnt       0x00000008
-#define AOFF_mm_swap_address   0x000000c8
+#define AOFF_mm_swap_address   0x000000f0
 #define ASIZ_mm_swap_address   0x00000008
-#define AOFF_mm_segments       0x000000d0
+#define AOFF_mm_segments       0x000000f8
 #define ASIZ_mm_segments       0x00000008
-#define ASIZ_mm        0x000000d8
+#define ASIZ_mm        0x00000100
 #define AOFF_thread_ksp        0x00000000
 #define ASIZ_thread_ksp        0x00000008
 #define AOFF_thread_wstate     0x00000008
 #define AOFF_task_tarray_ptr   0x000000e8
 #define ASIZ_task_tarray_ptr   0x00000008
 #define AOFF_task_wait_chldexit        0x000000f0
-#define ASIZ_task_wait_chldexit        0x00000008
-#define AOFF_task_vfork_sem    0x000000f8
+#define ASIZ_task_wait_chldexit        0x00000028
+#define AOFF_task_vfork_sem    0x00000118
 #define ASIZ_task_vfork_sem    0x00000008
-#define AOFF_task_policy       0x00000100
+#define AOFF_task_policy       0x00000120
 #define ASIZ_task_policy       0x00000008
-#define AOFF_task_rt_priority  0x00000108
+#define AOFF_task_rt_priority  0x00000128
 #define ASIZ_task_rt_priority  0x00000008
-#define AOFF_task_it_real_value        0x00000110
+#define AOFF_task_it_real_value        0x00000130
 #define ASIZ_task_it_real_value        0x00000008
-#define AOFF_task_it_prof_value        0x00000118
+#define AOFF_task_it_prof_value        0x00000138
 #define ASIZ_task_it_prof_value        0x00000008
-#define AOFF_task_it_virt_value        0x00000120
+#define AOFF_task_it_virt_value        0x00000140
 #define ASIZ_task_it_virt_value        0x00000008
-#define AOFF_task_it_real_incr 0x00000128
+#define AOFF_task_it_real_incr 0x00000148
 #define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000130
+#define AOFF_task_it_prof_incr 0x00000150
 #define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000138
+#define AOFF_task_it_virt_incr 0x00000158
 #define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer   0x00000140
+#define AOFF_task_real_timer   0x00000160
 #define ASIZ_task_real_timer   0x00000028
-#define AOFF_task_times        0x00000168
+#define AOFF_task_times        0x00000188
 #define ASIZ_task_times        0x00000020
-#define AOFF_task_start_time   0x00000188
+#define AOFF_task_start_time   0x000001a8
 #define ASIZ_task_start_time   0x00000008
-#define AOFF_task_per_cpu_utime        0x00000190
+#define AOFF_task_per_cpu_utime        0x000001b0
 #define ASIZ_task_per_cpu_utime        0x00000100
-#define AOFF_task_min_flt      0x00000390
+#define AOFF_task_min_flt      0x000003b0
 #define ASIZ_task_min_flt      0x00000008
-#define AOFF_task_maj_flt      0x00000398
+#define AOFF_task_maj_flt      0x000003b8
 #define ASIZ_task_maj_flt      0x00000008
-#define AOFF_task_nswap        0x000003a0
+#define AOFF_task_nswap        0x000003c0
 #define ASIZ_task_nswap        0x00000008
-#define AOFF_task_cmin_flt     0x000003a8
+#define AOFF_task_cmin_flt     0x000003c8
 #define ASIZ_task_cmin_flt     0x00000008
-#define AOFF_task_cmaj_flt     0x000003b0
+#define AOFF_task_cmaj_flt     0x000003d0
 #define ASIZ_task_cmaj_flt     0x00000008
-#define AOFF_task_cnswap       0x000003b8
+#define AOFF_task_cnswap       0x000003d8
 #define ASIZ_task_cnswap       0x00000008
-#define AOFF_task_uid  0x000003c4
+#define AOFF_task_uid  0x000003e4
 #define ASIZ_task_uid  0x00000004
-#define AOFF_task_euid 0x000003c8
+#define AOFF_task_euid 0x000003e8
 #define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000003cc
+#define AOFF_task_suid 0x000003ec
 #define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid        0x000003d0
+#define AOFF_task_fsuid        0x000003f0
 #define ASIZ_task_fsuid        0x00000004
-#define AOFF_task_gid  0x000003d4
+#define AOFF_task_gid  0x000003f4
 #define ASIZ_task_gid  0x00000004
-#define AOFF_task_egid 0x000003d8
+#define AOFF_task_egid 0x000003f8
 #define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000003dc
+#define AOFF_task_sgid 0x000003fc
 #define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid        0x000003e0
+#define AOFF_task_fsgid        0x00000400
 #define ASIZ_task_fsgid        0x00000004
-#define AOFF_task_ngroups      0x000003e4
+#define AOFF_task_ngroups      0x00000404
 #define ASIZ_task_ngroups      0x00000004
-#define AOFF_task_groups       0x000003e8
+#define AOFF_task_groups       0x00000408
 #define ASIZ_task_groups       0x00000080
-#define AOFF_task_cap_effective        0x00000468
+#define AOFF_task_cap_effective        0x00000488
 #define ASIZ_task_cap_effective        0x00000004
-#define AOFF_task_cap_inheritable      0x0000046c
+#define AOFF_task_cap_inheritable      0x0000048c
 #define ASIZ_task_cap_inheritable      0x00000004
-#define AOFF_task_cap_permitted        0x00000470
+#define AOFF_task_cap_permitted        0x00000490
 #define ASIZ_task_cap_permitted        0x00000004
-#define AOFF_task_user 0x00000478
+#define AOFF_task_user 0x00000498
 #define ASIZ_task_user 0x00000008
-#define AOFF_task_rlim 0x00000480
+#define AOFF_task_rlim 0x000004a0
 #define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math    0x00000520
+#define AOFF_task_used_math    0x00000540
 #define ASIZ_task_used_math    0x00000002
-#define AOFF_task_comm 0x00000522
+#define AOFF_task_comm 0x00000542
 #define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count   0x00000534
+#define AOFF_task_link_count   0x00000554
 #define ASIZ_task_link_count   0x00000004
-#define AOFF_task_tty  0x00000538
+#define AOFF_task_tty  0x00000558
 #define ASIZ_task_tty  0x00000008
-#define AOFF_task_semundo      0x00000540
+#define AOFF_task_semundo      0x00000560
 #define ASIZ_task_semundo      0x00000008
-#define AOFF_task_semsleeping  0x00000548
+#define AOFF_task_semsleeping  0x00000568
 #define ASIZ_task_semsleeping  0x00000008
-#define AOFF_task_tss  0x00000550
+#define AOFF_task_tss  0x00000570
 #define ASIZ_task_tss  0x00000470
-#define AOFF_task_fs   0x000009c0
+#define AOFF_task_fs   0x000009e0
 #define ASIZ_task_fs   0x00000008
-#define AOFF_task_files        0x000009c8
+#define AOFF_task_files        0x000009e8
 #define ASIZ_task_files        0x00000008
-#define AOFF_task_mm   0x000009d0
+#define AOFF_task_mm   0x000009f0
 #define ASIZ_task_mm   0x00000008
-#define AOFF_task_sigmask_lock 0x000009d8
+#define AOFF_task_sigmask_lock 0x000009f8
 #define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig  0x000009e0
+#define AOFF_task_sig  0x00000a00
 #define ASIZ_task_sig  0x00000008
-#define AOFF_task_signal       0x000009e8
+#define AOFF_task_signal       0x00000a08
 #define ASIZ_task_signal       0x00000008
-#define AOFF_task_blocked      0x000009f0
+#define AOFF_task_blocked      0x00000a10
 #define ASIZ_task_blocked      0x00000008
-#define AOFF_task_sigqueue     0x000009f8
+#define AOFF_task_sigqueue     0x00000a18
 #define ASIZ_task_sigqueue     0x00000008
-#define AOFF_task_sigqueue_tail        0x00000a00
+#define AOFF_task_sigqueue_tail        0x00000a20
 #define ASIZ_task_sigqueue_tail        0x00000008
-#define AOFF_task_sas_ss_sp    0x00000a08
+#define AOFF_task_sas_ss_sp    0x00000a28
 #define ASIZ_task_sas_ss_sp    0x00000008
-#define AOFF_task_sas_ss_size  0x00000a10
+#define AOFF_task_sas_ss_size  0x00000a30
 #define ASIZ_task_sas_ss_size  0x00000008
-#define ASIZ_task      0x00000a20
+#define ASIZ_task      0x00000a40
 #define AOFF_mm_mmap   0x00000000
 #define ASIZ_mm_mmap   0x00000008
 #define AOFF_mm_mmap_avl       0x00000008
 #define AOFF_mm_map_count      0x00000024
 #define ASIZ_mm_map_count      0x00000004
 #define AOFF_mm_mmap_sem       0x00000028
-#define ASIZ_mm_mmap_sem       0x00000010
-#define AOFF_mm_context        0x00000038
+#define ASIZ_mm_mmap_sem       0x00000038
+#define AOFF_mm_context        0x00000060
 #define ASIZ_mm_context        0x00000008
-#define AOFF_mm_start_code     0x00000040
+#define AOFF_mm_start_code     0x00000068
 #define ASIZ_mm_start_code     0x00000008
-#define AOFF_mm_end_code       0x00000048
+#define AOFF_mm_end_code       0x00000070
 #define ASIZ_mm_end_code       0x00000008
-#define AOFF_mm_start_data     0x00000050
+#define AOFF_mm_start_data     0x00000078
 #define ASIZ_mm_start_data     0x00000008
-#define AOFF_mm_end_data       0x00000058
+#define AOFF_mm_end_data       0x00000080
 #define ASIZ_mm_end_data       0x00000008
-#define AOFF_mm_start_brk      0x00000060
+#define AOFF_mm_start_brk      0x00000088
 #define ASIZ_mm_start_brk      0x00000008
-#define AOFF_mm_brk    0x00000068
+#define AOFF_mm_brk    0x00000090
 #define ASIZ_mm_brk    0x00000008
-#define AOFF_mm_start_stack    0x00000070
+#define AOFF_mm_start_stack    0x00000098
 #define ASIZ_mm_start_stack    0x00000008
-#define AOFF_mm_arg_start      0x00000078
+#define AOFF_mm_arg_start      0x000000a0
 #define ASIZ_mm_arg_start      0x00000008
-#define AOFF_mm_arg_end        0x00000080
+#define AOFF_mm_arg_end        0x000000a8
 #define ASIZ_mm_arg_end        0x00000008
-#define AOFF_mm_env_start      0x00000088
+#define AOFF_mm_env_start      0x000000b0
 #define ASIZ_mm_env_start      0x00000008
-#define AOFF_mm_env_end        0x00000090
+#define AOFF_mm_env_end        0x000000b8
 #define ASIZ_mm_env_end        0x00000008
-#define AOFF_mm_rss    0x00000098
+#define AOFF_mm_rss    0x000000c0
 #define ASIZ_mm_rss    0x00000008
-#define AOFF_mm_total_vm       0x000000a0
+#define AOFF_mm_total_vm       0x000000c8
 #define ASIZ_mm_total_vm       0x00000008
-#define AOFF_mm_locked_vm      0x000000a8
+#define AOFF_mm_locked_vm      0x000000d0
 #define ASIZ_mm_locked_vm      0x00000008
-#define AOFF_mm_def_flags      0x000000b0
+#define AOFF_mm_def_flags      0x000000d8
 #define ASIZ_mm_def_flags      0x00000008
-#define AOFF_mm_cpu_vm_mask    0x000000b8
+#define AOFF_mm_cpu_vm_mask    0x000000e0
 #define ASIZ_mm_cpu_vm_mask    0x00000008
-#define AOFF_mm_swap_cnt       0x000000c0
+#define AOFF_mm_swap_cnt       0x000000e8
 #define ASIZ_mm_swap_cnt       0x00000008
-#define AOFF_mm_swap_address   0x000000c8
+#define AOFF_mm_swap_address   0x000000f0
 #define ASIZ_mm_swap_address   0x00000008
-#define AOFF_mm_segments       0x000000d0
+#define AOFF_mm_segments       0x000000f8
 #define ASIZ_mm_segments       0x00000008
-#define ASIZ_mm        0x000000d8
+#define ASIZ_mm        0x00000100
 #define AOFF_thread_ksp        0x00000000
 #define ASIZ_thread_ksp        0x00000008
 #define AOFF_thread_wstate     0x00000008
 #define AOFF_task_tarray_ptr   0x000000e8
 #define ASIZ_task_tarray_ptr   0x00000008
 #define AOFF_task_wait_chldexit        0x000000f0
-#define ASIZ_task_wait_chldexit        0x00000008
-#define AOFF_task_vfork_sem    0x000000f8
+#define ASIZ_task_wait_chldexit        0x00000030
+#define AOFF_task_vfork_sem    0x00000120
 #define ASIZ_task_vfork_sem    0x00000008
-#define AOFF_task_policy       0x00000100
+#define AOFF_task_policy       0x00000128
 #define ASIZ_task_policy       0x00000008
-#define AOFF_task_rt_priority  0x00000108
+#define AOFF_task_rt_priority  0x00000130
 #define ASIZ_task_rt_priority  0x00000008
-#define AOFF_task_it_real_value        0x00000110
+#define AOFF_task_it_real_value        0x00000138
 #define ASIZ_task_it_real_value        0x00000008
-#define AOFF_task_it_prof_value        0x00000118
+#define AOFF_task_it_prof_value        0x00000140
 #define ASIZ_task_it_prof_value        0x00000008
-#define AOFF_task_it_virt_value        0x00000120
+#define AOFF_task_it_virt_value        0x00000148
 #define ASIZ_task_it_virt_value        0x00000008
-#define AOFF_task_it_real_incr 0x00000128
+#define AOFF_task_it_real_incr 0x00000150
 #define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000130
+#define AOFF_task_it_prof_incr 0x00000158
 #define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000138
+#define AOFF_task_it_virt_incr 0x00000160
 #define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer   0x00000140
+#define AOFF_task_real_timer   0x00000168
 #define ASIZ_task_real_timer   0x00000028
-#define AOFF_task_times        0x00000168
+#define AOFF_task_times        0x00000190
 #define ASIZ_task_times        0x00000020
-#define AOFF_task_start_time   0x00000188
+#define AOFF_task_start_time   0x000001b0
 #define ASIZ_task_start_time   0x00000008
-#define AOFF_task_per_cpu_utime        0x00000190
+#define AOFF_task_per_cpu_utime        0x000001b8
 #define ASIZ_task_per_cpu_utime        0x00000100
-#define AOFF_task_min_flt      0x00000390
+#define AOFF_task_min_flt      0x000003b8
 #define ASIZ_task_min_flt      0x00000008
-#define AOFF_task_maj_flt      0x00000398
+#define AOFF_task_maj_flt      0x000003c0
 #define ASIZ_task_maj_flt      0x00000008
-#define AOFF_task_nswap        0x000003a0
+#define AOFF_task_nswap        0x000003c8
 #define ASIZ_task_nswap        0x00000008
-#define AOFF_task_cmin_flt     0x000003a8
+#define AOFF_task_cmin_flt     0x000003d0
 #define ASIZ_task_cmin_flt     0x00000008
-#define AOFF_task_cmaj_flt     0x000003b0
+#define AOFF_task_cmaj_flt     0x000003d8
 #define ASIZ_task_cmaj_flt     0x00000008
-#define AOFF_task_cnswap       0x000003b8
+#define AOFF_task_cnswap       0x000003e0
 #define ASIZ_task_cnswap       0x00000008
-#define AOFF_task_uid  0x000003c4
+#define AOFF_task_uid  0x000003ec
 #define ASIZ_task_uid  0x00000004
-#define AOFF_task_euid 0x000003c8
+#define AOFF_task_euid 0x000003f0
 #define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000003cc
+#define AOFF_task_suid 0x000003f4
 #define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid        0x000003d0
+#define AOFF_task_fsuid        0x000003f8
 #define ASIZ_task_fsuid        0x00000004
-#define AOFF_task_gid  0x000003d4
+#define AOFF_task_gid  0x000003fc
 #define ASIZ_task_gid  0x00000004
-#define AOFF_task_egid 0x000003d8
+#define AOFF_task_egid 0x00000400
 #define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000003dc
+#define AOFF_task_sgid 0x00000404
 #define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid        0x000003e0
+#define AOFF_task_fsgid        0x00000408
 #define ASIZ_task_fsgid        0x00000004
-#define AOFF_task_ngroups      0x000003e4
+#define AOFF_task_ngroups      0x0000040c
 #define ASIZ_task_ngroups      0x00000004
-#define AOFF_task_groups       0x000003e8
+#define AOFF_task_groups       0x00000410
 #define ASIZ_task_groups       0x00000080
-#define AOFF_task_cap_effective        0x00000468
+#define AOFF_task_cap_effective        0x00000490
 #define ASIZ_task_cap_effective        0x00000004
-#define AOFF_task_cap_inheritable      0x0000046c
+#define AOFF_task_cap_inheritable      0x00000494
 #define ASIZ_task_cap_inheritable      0x00000004
-#define AOFF_task_cap_permitted        0x00000470
+#define AOFF_task_cap_permitted        0x00000498
 #define ASIZ_task_cap_permitted        0x00000004
-#define AOFF_task_user 0x00000478
+#define AOFF_task_user 0x000004a0
 #define ASIZ_task_user 0x00000008
-#define AOFF_task_rlim 0x00000480
+#define AOFF_task_rlim 0x000004a8
 #define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math    0x00000520
+#define AOFF_task_used_math    0x00000548
 #define ASIZ_task_used_math    0x00000002
-#define AOFF_task_comm 0x00000522
+#define AOFF_task_comm 0x0000054a
 #define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count   0x00000534
+#define AOFF_task_link_count   0x0000055c
 #define ASIZ_task_link_count   0x00000004
-#define AOFF_task_tty  0x00000538
+#define AOFF_task_tty  0x00000560
 #define ASIZ_task_tty  0x00000008
-#define AOFF_task_semundo      0x00000540
+#define AOFF_task_semundo      0x00000568
 #define ASIZ_task_semundo      0x00000008
-#define AOFF_task_semsleeping  0x00000548
+#define AOFF_task_semsleeping  0x00000570
 #define ASIZ_task_semsleeping  0x00000008
-#define AOFF_task_tss  0x00000550
+#define AOFF_task_tss  0x00000580
 #define ASIZ_task_tss  0x00000470
-#define AOFF_task_fs   0x000009c0
+#define AOFF_task_fs   0x000009f0
 #define ASIZ_task_fs   0x00000008
-#define AOFF_task_files        0x000009c8
+#define AOFF_task_files        0x000009f8
 #define ASIZ_task_files        0x00000008
-#define AOFF_task_mm   0x000009d0
+#define AOFF_task_mm   0x00000a00
 #define ASIZ_task_mm   0x00000008
-#define AOFF_task_sigmask_lock 0x000009d8
+#define AOFF_task_sigmask_lock 0x00000a08
 #define ASIZ_task_sigmask_lock 0x0000000c
-#define AOFF_task_sig  0x000009e8
+#define AOFF_task_sig  0x00000a18
 #define ASIZ_task_sig  0x00000008
-#define AOFF_task_signal       0x000009f0
+#define AOFF_task_signal       0x00000a20
 #define ASIZ_task_signal       0x00000008
-#define AOFF_task_blocked      0x000009f8
+#define AOFF_task_blocked      0x00000a28
 #define ASIZ_task_blocked      0x00000008
-#define AOFF_task_sigqueue     0x00000a00
+#define AOFF_task_sigqueue     0x00000a30
 #define ASIZ_task_sigqueue     0x00000008
-#define AOFF_task_sigqueue_tail        0x00000a08
+#define AOFF_task_sigqueue_tail        0x00000a38
 #define ASIZ_task_sigqueue_tail        0x00000008
-#define AOFF_task_sas_ss_sp    0x00000a10
+#define AOFF_task_sas_ss_sp    0x00000a40
 #define ASIZ_task_sas_ss_sp    0x00000008
-#define AOFF_task_sas_ss_size  0x00000a18
+#define AOFF_task_sas_ss_size  0x00000a48
 #define ASIZ_task_sas_ss_size  0x00000008
-#define ASIZ_task      0x00000a20
+#define ASIZ_task      0x00000a50
 #define AOFF_mm_mmap   0x00000000
 #define ASIZ_mm_mmap   0x00000008
 #define AOFF_mm_mmap_avl       0x00000008
 #define AOFF_mm_map_count      0x00000024
 #define ASIZ_mm_map_count      0x00000004
 #define AOFF_mm_mmap_sem       0x00000028
-#define ASIZ_mm_mmap_sem       0x00000010
-#define AOFF_mm_context        0x00000038
+#define ASIZ_mm_mmap_sem       0x00000040
+#define AOFF_mm_context        0x00000068
 #define ASIZ_mm_context        0x00000008
-#define AOFF_mm_start_code     0x00000040
+#define AOFF_mm_start_code     0x00000070
 #define ASIZ_mm_start_code     0x00000008
-#define AOFF_mm_end_code       0x00000048
+#define AOFF_mm_end_code       0x00000078
 #define ASIZ_mm_end_code       0x00000008
-#define AOFF_mm_start_data     0x00000050
+#define AOFF_mm_start_data     0x00000080
 #define ASIZ_mm_start_data     0x00000008
-#define AOFF_mm_end_data       0x00000058
+#define AOFF_mm_end_data       0x00000088
 #define ASIZ_mm_end_data       0x00000008
-#define AOFF_mm_start_brk      0x00000060
+#define AOFF_mm_start_brk      0x00000090
 #define ASIZ_mm_start_brk      0x00000008
-#define AOFF_mm_brk    0x00000068
+#define AOFF_mm_brk    0x00000098
 #define ASIZ_mm_brk    0x00000008
-#define AOFF_mm_start_stack    0x00000070
+#define AOFF_mm_start_stack    0x000000a0
 #define ASIZ_mm_start_stack    0x00000008
-#define AOFF_mm_arg_start      0x00000078
+#define AOFF_mm_arg_start      0x000000a8
 #define ASIZ_mm_arg_start      0x00000008
-#define AOFF_mm_arg_end        0x00000080
+#define AOFF_mm_arg_end        0x000000b0
 #define ASIZ_mm_arg_end        0x00000008
-#define AOFF_mm_env_start      0x00000088
+#define AOFF_mm_env_start      0x000000b8
 #define ASIZ_mm_env_start      0x00000008
-#define AOFF_mm_env_end        0x00000090
+#define AOFF_mm_env_end        0x000000c0
 #define ASIZ_mm_env_end        0x00000008
-#define AOFF_mm_rss    0x00000098
+#define AOFF_mm_rss    0x000000c8
 #define ASIZ_mm_rss    0x00000008
-#define AOFF_mm_total_vm       0x000000a0
+#define AOFF_mm_total_vm       0x000000d0
 #define ASIZ_mm_total_vm       0x00000008
-#define AOFF_mm_locked_vm      0x000000a8
+#define AOFF_mm_locked_vm      0x000000d8
 #define ASIZ_mm_locked_vm      0x00000008
-#define AOFF_mm_def_flags      0x000000b0
+#define AOFF_mm_def_flags      0x000000e0
 #define ASIZ_mm_def_flags      0x00000008
-#define AOFF_mm_cpu_vm_mask    0x000000b8
+#define AOFF_mm_cpu_vm_mask    0x000000e8
 #define ASIZ_mm_cpu_vm_mask    0x00000008
-#define AOFF_mm_swap_cnt       0x000000c0
+#define AOFF_mm_swap_cnt       0x000000f0
 #define ASIZ_mm_swap_cnt       0x00000008
-#define AOFF_mm_swap_address   0x000000c8
+#define AOFF_mm_swap_address   0x000000f8
 #define ASIZ_mm_swap_address   0x00000008
-#define AOFF_mm_segments       0x000000d0
+#define AOFF_mm_segments       0x00000100
 #define ASIZ_mm_segments       0x00000008
-#define ASIZ_mm        0x000000d8
+#define ASIZ_mm        0x00000108
 #define AOFF_thread_ksp        0x00000000
 #define ASIZ_thread_ksp        0x00000008
 #define AOFF_thread_wstate     0x00000008
index ca5e06538c1662f2118625223aaa587b87466f25..27543806bd947569983243700e33ef32e1adc6f1 100644 (file)
@@ -275,7 +275,7 @@ struct sparcaudio_driver
         struct linux_sbus_device *dev;
 
        /* Processes blocked on open() sit here. */
-       struct wait_queue *open_wait;
+       wait_queue_head_t open_wait;
 
        /* Task queue for this driver's bottom half. */
        struct tq_struct tqueue;
@@ -288,7 +288,7 @@ struct sparcaudio_driver
        size_t *output_sizes, output_size, output_buffer_size;
        int num_output_buffers, output_front, output_rear, output_offset;
        int output_count, output_active, playing_count, output_eof;
-       struct wait_queue *output_write_wait, *output_drain_wait;
+       wait_queue_head_t output_write_wait, output_drain_wait;
         char *output_notify;
 
         /* Support for a circular queue of input buffers. */
@@ -296,7 +296,7 @@ struct sparcaudio_driver
        size_t *input_sizes, input_size, input_buffer_size;
         int num_input_buffers, input_front, input_rear, input_offset;
         int input_count, input_active, recording_count;
-        struct wait_queue *input_read_wait;
+        wait_queue_head_t input_read_wait;
 
         /* Hack to make it look like we support variable size buffers. */
         int buffer_size;
index 169e88d0222e668acf8d1be4ba8f8183548dc3bd..8cb99a22f447763a37a0298b29db82113a45b45b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sab82532.h,v 1.4 1998/10/25 23:04:29 ecd Exp $
+/* $Id: sab82532.h,v 1.5 1999/05/12 11:21:22 davem Exp $
  * sab82532.h: Register Definitions for the Siemens SAB82532 DUSCC
  *
  * Copyright (C) 1997  Eddie C. Dost  (ecd@skynet.be)
@@ -173,9 +173,9 @@ struct sab82532 {
        struct async_icount              icount;
        struct termios                   normal_termios;
        struct termios                   callout_termios;
-       struct wait_queue               *open_wait;
-       struct wait_queue               *close_wait;
-       struct wait_queue               *delta_msr_wait;
+       wait_queue_head_t                open_wait;
+       wait_queue_head_t                close_wait;
+       wait_queue_head_t                delta_msr_wait;
        struct sab82532                 *next;
        struct sab82532                 *prev;
 };
index e35a665131535bafa0b5cfbb0365922bc8e44b83..e119514c4cb9b0c3ad4ca9555b7d3705832e7bcd 100644 (file)
 struct semaphore {
        atomic_t count;
        atomic_t waking;
-       struct wait_queue * wait;
+       wait_queue_head_t wait;
+#if WAITQUEUE_DEBUG
+       long __magic;
+#endif
 };
 
-#define MUTEX ((struct semaphore) { ATOMIC_INIT(1), ATOMIC_INIT(0), NULL })
-#define MUTEX_LOCKED ((struct semaphore) { ATOMIC_INIT(0), ATOMIC_INIT(0), NULL })
+#if WAITQUEUE_DEBUG
+# define __SEM_DEBUG_INIT(name) \
+               , (long)&(name).__magic
+#else
+# define __SEM_DEBUG_INIT(name)
+#endif
+
+#define __SEMAPHORE_INITIALIZER(name,count) \
+{ ATOMIC_INIT(count), ATOMIC_INIT(0), __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) \
+       __SEM_DEBUG_INIT(name) }
+
+#define __MUTEX_INITIALIZER(name) \
+       __SEMAPHORE_INITIALIZER(name,1)
+
+#define __DECLARE_SEMAPHORE_GENERIC(name,count) \
+       struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
+
+#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
+#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
+
+extern inline void sema_init (struct semaphore *sem, int val)
+{
+       atomic_set(&sem->count, val);
+       atomic_set(&sem->waking, 0);
+       init_waitqueue_head(&sem->wait);
+#if WAITQUEUE_DEBUG
+       sem->__magic = (long)&sem->__magic;
+#endif
+}
+
+static inline void init_MUTEX (struct semaphore *sem)
+{
+       sema_init(sem, 1);
+}
+
+static inline void init_MUTEX_LOCKED (struct semaphore *sem)
+{
+       sema_init(sem, 0);
+}
 
 extern void __down(struct semaphore * sem);
 extern int  __down_interruptible(struct semaphore * sem);
 extern int  __down_trylock(struct semaphore * sem);
 extern void __up(struct semaphore * sem);
 
-#define sema_init(sem, val)    atomic_set(&((sem)->count), val)
-
 extern __inline__ void down(struct semaphore * sem)
 {
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
         __asm__ __volatile__("
        1:      lduw    [%0], %%g5
                sub     %%g5, 1, %%g7
@@ -56,6 +97,9 @@ extern __inline__ int down_interruptible(struct semaphore *sem)
 {
        int ret = 0;
        
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
         __asm__ __volatile__("
        1:      lduw    [%2], %%g5
                sub     %%g5, 1, %%g7
@@ -89,6 +133,9 @@ extern __inline__ int down_interruptible(struct semaphore *sem)
 extern inline int down_trylock(struct semaphore *sem)
 {
        int ret = 0;
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
         __asm__ __volatile__("
        1:      lduw    [%2], %%g5
                sub     %%g5, 1, %%g7
@@ -121,6 +168,9 @@ extern inline int down_trylock(struct semaphore *sem)
 
 extern __inline__ void up(struct semaphore * sem)
 {
+#if WAITQUEUE_DEBUG
+       CHECK_MAGIC(sem->__magic);
+#endif
        __asm__ __volatile__("
                membar  #StoreLoad | #LoadLoad
        1:      lduw    [%0], %%g5
index 1d3b3502033e0b3d97baf5719b3d2a9f607e8149..930e32f65edb2aaa18c4e9f3ba440fda3574e6d1 100644 (file)
@@ -186,11 +186,11 @@ typedef struct {
        unsigned char lock;
        unsigned int owner_pc, owner_cpu;
 } spinlock_t;
-#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 0, NO_PROC_ID }
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0, 0, 0xff }
 #define spin_lock_init(__lock) \
 do {   (__lock)->lock = 0; \
        (__lock)->owner_pc = 0; \
-       (__lock)->owner_cpu = NO_PROC_ID; \
+       (__lock)->owner_cpu = 0xff; \
 } while(0)
 #define spin_is_locked(__lock) (*((volatile unsigned char *)(&((__lock)->lock))) != 0)
 #define spin_unlock_wait(__lock)       \
@@ -322,7 +322,7 @@ typedef struct {
        unsigned int writer_pc, writer_cpu;
        unsigned int reader_pc[4];
 } rwlock_t;
-#define RW_LOCK_UNLOCKED       (rwlock_t) { 0, 0, NO_PROC_ID, { 0, 0, 0, 0 } }
+#define RW_LOCK_UNLOCKED       (rwlock_t) { 0, 0, 0xff, { 0, 0, 0, 0 } }
 
 extern void _do_read_lock(rwlock_t *rw, char *str);
 extern void _do_read_unlock(rwlock_t *rw, char *str);
index 2de8ff1ff0cc8d74c93826cb609cd245a64e5366..77d2c4ebe37f943d871cc5715fcff04119749fd5 100644 (file)
@@ -23,7 +23,7 @@ struct coda_sb_info
 /* communication pending/processing queues */
 struct venus_comm {
        u_long              vc_seq;
-       struct wait_queue  *vc_waitq; /* Venus wait queue */
+       wait_queue_head_t   vc_waitq; /* Venus wait queue */
        struct list_head    vc_pending;
        struct list_head    vc_processing;
        int                 vc_inuse;
@@ -93,7 +93,7 @@ struct upc_req {
        u_short             uc_outSize;
        u_short             uc_opcode;  /* copied from data to save lookup */
        int                 uc_unique;
-       struct wait_queue  *uc_sleep;   /* process' wait queue */
+       wait_queue_head_t   uc_sleep;   /* process' wait queue */
        unsigned long       uc_posttime;
 };
 
index d6cd0c25bb17397d9619b8ea01cac8a7dc901055..e01e4d23fbf40745d788217ebf4a7eb2b36d39f8 100644 (file)
@@ -109,7 +109,7 @@ struct ppp {
        __u16           rfcs;           /* FCS so far of rpkt           */
 
        /* Queues for select() functionality */
-       struct wait_queue *read_wait;   /* queue for reading processes  */
+       wait_queue_head_t read_wait;    /* queue for reading processes  */
 
        /* info for detecting idle channels */
        unsigned long   last_xmit;      /* time of last transmission    */
index 4497eeedbe705ff52d6072f699d73852c9107660..dcec07e0aa674b04452532774f96ecb9e10ec80d 100644 (file)
@@ -43,7 +43,7 @@ struct msdos_sb_info {
        unsigned long clusters;      /* number of clusters */
        unsigned long root_cluster;  /* first cluster of the root directory */
        unsigned long fsinfo_offset; /* FAT32 fsinfo offset from start of disk */
-       struct wait_queue *fat_wait;
+       wait_queue_head_t fat_wait;
        int fat_lock;
        int prev_free;               /* previously returned free cluster number */
        int free_clusters;           /* -1 if undefined */
index adf1eef660e695359b87c7ee647827aaceb03891..04980a8791fd54d2f21a814fd86023286dc620df 100644 (file)
@@ -44,7 +44,7 @@ struct ncp_server {
                                   receive replies */
 
        int lock;               /* To prevent mismatch in protocols. */
-       struct wait_queue *wait;
+       wait_queue_head_t wait;
 
        int current_size;       /* for packet preparation */
        int has_subfunction;
index 3adbc5ab3d5810eb7437b41244932070e1ad48cc..d324c317bb93e0232b6b7222cfd65172ee3b95cc 100644 (file)
@@ -163,7 +163,7 @@ struct pardevice {
        struct pardevice *next;
        struct pardevice *prev;
        struct parport_state *state;     /* saved status over preemption */
-       struct wait_queue *wait_q;
+       wait_queue_head_t wait_q;
        unsigned long int time;
        unsigned long int timeslice;
        unsigned int waiting;
index 5efd211a2d75edb84dcb1420dc1260b712b2bec2..655d41d54ad1bccc7ec74b9a9050d4adbf16799f 100644 (file)
@@ -35,7 +35,7 @@ struct stripe_head {
        int                     count;                  /* nr of waiters */
        int                     write_method;           /* reconstruct-write / read-modify-write */
        int                     phase;                  /* PHASE_BEGIN, ..., PHASE_COMPLETE */
-       struct wait_queue       *wait;                  /* processes waiting for this stripe */
+       wait_queue_head_t       wait;                   /* processes waiting for this stripe */
 };
 
 /*
@@ -94,7 +94,7 @@ struct raid5_data {
         */
        int                     nr_free_sh;
        struct stripe_head      *free_sh_list;
-       struct wait_queue       *wait_for_stripe;
+       wait_queue_head_t       wait_for_stripe;
 };
 
 #endif
index cedbb5ab8409c8cdb566755c866ba601187438da..31052af1f5e6b448d4f2d85946c56a58403d722f 100644 (file)
@@ -34,7 +34,7 @@ struct smb_sb_info {
        struct smb_conn_opt opt;
 
        struct semaphore sem;
-       struct wait_queue * wait;
+       wait_queue_head_t wait;
 
        __u32              packet_size;
        unsigned char *    packet;
index 8d69056489f4ce1e378ec64f3f58eb1a7e107768..2831d5e783891629bbc5f97a9a21927213b7e584 100644 (file)
@@ -26,13 +26,13 @@ extern int printk(const char *fmt, ...);
        *(int*)0 = 0; \
 } while (0)
 
-#define CHECK_MAGIC(x) if (x != (int)&(x)) \
-       { printk("bad magic %08x (should be %08x), ", x, (int)&(x)); WQ_BUG(); }
+#define CHECK_MAGIC(x) if (x != (long)&(x)) \
+       { printk("bad magic %lx (should be %lx), ", x, (long)&(x)); WQ_BUG(); }
 
 #define CHECK_MAGIC_WQHEAD(x) do { \
-       if (x->__magic != (int)&(x->__magic)) { \
-               printk("bad magic %08x (should be %08x, creator %08x), ", \
-                       x->__magic, (int)&(x->__magic), x->__creator); \
+       if (x->__magic != (long)&(x->__magic)) { \
+               printk("bad magic %lx (should be %lx, creator %lx), ", \
+                       x->__magic, (long)&(x->__magic), x->__creator); \
                WQ_BUG(); \
        } \
 } while (0)
@@ -43,8 +43,8 @@ struct __wait_queue {
        struct task_struct * task;
        struct list_head task_list;
 #if WAITQUEUE_DEBUG
-       int __magic;
-       int __waker;
+       long __magic;
+       long __waker;
 #endif
 };
 typedef struct __wait_queue wait_queue_t;
@@ -87,17 +87,17 @@ struct __wait_queue_head {
        wq_lock_t lock;
        struct list_head task_list;
 #if WAITQUEUE_DEBUG
-       int __magic;
-       int __creator;
+       long __magic;
+       long __creator;
 #endif
 };
 typedef struct __wait_queue_head wait_queue_head_t;
 
 #if WAITQUEUE_DEBUG
 # define __WAITQUEUE_DEBUG_INIT(name) \
-               , (int)&(name).__magic, 0
+               , (long)&(name).__magic, 0
 # define __WAITQUEUE_HEAD_DEBUG_INIT(name) \
-               , (int)&(name).__magic, (int)&(name).__magic
+               , (long)&(name).__magic, (long)&(name).__magic
 #else
 # define __WAITQUEUE_DEBUG_INIT(name)
 # define __WAITQUEUE_HEAD_DEBUG_INIT(name)
@@ -125,8 +125,8 @@ static inline void init_waitqueue_head(wait_queue_head_t *q)
        q->lock = WAITQUEUE_RW_LOCK_UNLOCKED;
        INIT_LIST_HEAD(&q->task_list);
 #if WAITQUEUE_DEBUG
-       q->__magic = (int)&q->__magic;
-       __x: q->__creator = (int)&&__x;
+       q->__magic = (long)&q->__magic;
+       __x: q->__creator = (long)&&__x;
 #endif
 }
 
@@ -139,7 +139,7 @@ static inline void init_waitqueue_entry(wait_queue_t *q,
 #endif
        q->task = p;
 #if WAITQUEUE_DEBUG
-       q->__magic = (int)&q->__magic;
+       q->__magic = (long)&q->__magic;
 #endif
 }
 
index 942c5a570384491fb4abd2fef71fe2fe3ae58f92..aa7bc9de2394a4ab01bf9b8eba1e5ecbe7e7f339 100644 (file)
@@ -907,7 +907,7 @@ void __wake_up(wait_queue_head_t *q, unsigned int mode)
                                goto out;
                        }
 #if WAITQUEUE_DEBUG
-                       curr->__waker = (int)__builtin_return_address(0);
+                       curr->__waker = (long)__builtin_return_address(0);
 #endif
                        wake_up_process(p);
                }
index fc7b1a5171379e81250d88cf110e1395c6dac511..7ca90f49a6b1bcad92d51fcd1e6af5a8229f1df4 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/interrupt.h>
 #include <asm/semaphore.h>
 
-struct semaphore firewall_sem = MUTEX; 
+DECLARE_MUTEX(firewall_sem);
 static int firewall_policy[NPROTO];
 static struct firewall_ops *firewall_chain[NPROTO];
 
index 3b44deb724b923c556dc9bef7396819f527e93d9..1473de7a3a83d527d6ab8f300e2f4e5e0498e036 100644 (file)
@@ -7,7 +7,7 @@
  *             handler for protocols to use and generic option handler.
  *
  *
- * Version:    $Id: sock.c,v 1.80 1999/05/08 03:04:34 davem Exp $
+ * Version:    $Id: sock.c,v 1.81 1999/05/12 11:24:19 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index bbdba8efec60194200b2e4a875de97eff7ba594b..f1f78200759550e4d89a1b783f5f23156cecebd9 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             PF_INET protocol family socket handler.
  *
- * Version:    $Id: af_inet.c,v 1.87 1999/04/22 10:07:33 davem Exp $
+ * Version:    $Id: af_inet.c,v 1.88 1999/05/12 11:24:27 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index 7ba485ab8a7097b4dff57b2bb6fa45070dab4f93..f0b8553c99cdbb47f960e2b575bffc6dd72da95c 100644 (file)
@@ -3,7 +3,7 @@
  *     
  *             Alan Cox, <alan@cymru.net>
  *
- *     Version: $Id: icmp.c,v 1.52 1999/03/21 12:04:11 davem Exp $
+ *     Version: $Id: icmp.c,v 1.53 1999/05/12 11:24:32 davem Exp $
  *
  *     This program is free software; you can redistribute it and/or
  *     modify it under the terms of the GNU General Public License
index dc38b1712d1b297425219723bb68c5db8a40779a..555342e8821c448c35c45c746f470a5a32b53916 100644 (file)
@@ -79,7 +79,7 @@ struct ip_masq_mfw {
 };
 
 
-static struct semaphore mfw_sema = MUTEX;
+static DECLARE_MUTEX(mfw_sema);
 #ifdef __SMP__
 static rwlock_t mfw_lock = RW_LOCK_UNLOCKED;
 #endif
index 2a1f931423a2be9c40a80d15197fcf95c7b808e8..6b8f6250ddaec4f285eb1b1e0250fb9b54ab9c0c 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             Implementation of the Transmission Control Protocol(TCP).
  *
- * Version:    $Id: tcp.c,v 1.140 1999/04/22 10:34:31 davem Exp $
+ * Version:    $Id: tcp.c,v 1.141 1999/05/12 11:24:40 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index 8d9db497986021a04d88b21074b69c2bbd4cffef..66be537c16333d2b2ca96d6b7efbf09d1d0be410 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             Implementation of the Transmission Control Protocol(TCP).
  *
- * Version:    $Id: tcp_ipv4.c,v 1.175 1999/05/08 21:09:54 davem Exp $
+ * Version:    $Id: tcp_ipv4.c,v 1.176 1999/05/12 11:24:46 davem Exp $
  *
  *             IPv4 specific functions
  *
index 9247bf99cadbcbed0806231b5402a6252daf557f..042b4773a67f756806e52e800cb728eeb60105fb 100644 (file)
@@ -331,7 +331,7 @@ int netlink_unicast(struct sock *ssk, struct sk_buff *skb, u32 pid, int nonblock
        struct sock *sk;
        int len = skb->len;
        int protocol = ssk->protocol;
-       struct wait_queue wait = { current, NULL };
+        DECLARE_WAITQUEUE(wait, current);
 
 retry:
        for (sk = nl_table[protocol]; sk; sk = sk->next) {
index e0bb1e70c976f3d06f6d1e6fdb447e8dd0b2604c..1d2b14787352c1d373081137d95eafc4778e1dee 100644 (file)
@@ -8,7 +8,7 @@
  *             as published by the Free Software Foundation; either version
  *             2 of the License, or (at your option) any later version.
  *
- * Version:    $Id: af_unix.c,v 1.76 1999/05/08 05:54:55 davem Exp $
+ * Version:    $Id: af_unix.c,v 1.77 1999/05/12 11:25:07 davem Exp $
  *
  * Fixes:
  *             Linus Torvalds  :       Assorted bug cures.