From c85e55bb761ffc311ace66915f8e43b04e43dbc7 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 23 Nov 2007 15:25:02 -0500 Subject: [PATCH] Linux 2.3.1pre3 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 --- arch/i386/kernel/apm.c | 2 +- arch/m68k/kernel/ints.c | 1 + arch/m68k/mm/kmap.c | 1 + arch/m68k/mvme147/config.c | 1 - arch/m68k/q40/config.c | 1 + arch/m68k/sun3x/time.c | 1 - arch/ppc/kernel/pmac_pic.c | 2 +- arch/sparc/ap1000/util.c | 2 +- arch/sparc/kernel/init_task.c | 6 +- arch/sparc/mm/asyncd.c | 4 +- arch/sparc64/kernel/init_task.c | 6 +- arch/sparc64/mm/asyncd.c | 4 +- arch/sparc64/solaris/timod.c | 12 +- drivers/block/ide-tape.c | 2 +- drivers/block/md.c | 4 +- drivers/block/nbd.c | 2 +- drivers/char/bttv.c | 8 +- drivers/char/bttv.h | 8 +- drivers/char/lp.c | 29 ++- drivers/char/msp3400.c | 13 +- drivers/char/pty.c | 5 + drivers/fc4/fc.c | 8 +- drivers/net/ppp.c | 2 +- drivers/sbus/audio/audio.c | 5 + drivers/sbus/audio/dbri.h | 2 +- drivers/sbus/char/bpp.c | 2 +- drivers/sbus/char/pcikbd.c | 8 +- drivers/sbus/char/sab82532.c | 14 +- drivers/sbus/char/su.c | 14 +- drivers/sbus/char/sunkbd.c | 6 +- drivers/sbus/char/sunmouse.c | 6 +- drivers/sbus/char/vfc.h | 2 +- drivers/sbus/char/zs.c | 12 +- drivers/sbus/char/zs.h | 6 +- drivers/scsi/pluto.c | 2 +- fs/coda/psdev.c | 1 + fs/fat/inode.c | 2 +- fs/ncpfs/inode.c | 6 +- fs/smbfs/inode.c | 8 +- include/asm-m68k/page.h | 2 + include/asm-m68k/q40_keyboard.h | 4 - include/asm-m68k/semaphore-helper.h | 2 + include/asm-m68k/semaphore.h | 1 - include/asm-sparc/asm_offsets.h | 296 +++++++++++------------ include/asm-sparc/audioio.h | 6 +- include/asm-sparc/semaphore.h | 65 ++++- include/asm-sparc64/asm_offsets.h | 456 ++++++++++++++++++------------------ include/asm-sparc64/audioio.h | 6 +- include/asm-sparc64/sab82532.h | 8 +- include/asm-sparc64/semaphore.h | 60 ++++- include/asm-sparc64/spinlock.h | 6 +- include/linux/coda_psdev.h | 4 +- include/linux/if_pppvar.h | 2 +- include/linux/msdos_fs_sb.h | 2 +- include/linux/ncp_fs_sb.h | 2 +- include/linux/parport.h | 2 +- include/linux/raid5.h | 4 +- include/linux/smb_fs_sb.h | 2 +- include/linux/wait.h | 28 +-- kernel/sched.c | 2 +- net/core/firewall.c | 2 +- net/core/sock.c | 2 +- net/ipv4/af_inet.c | 2 +- net/ipv4/icmp.c | 2 +- net/ipv4/ip_masq_mfw.c | 2 +- net/ipv4/tcp.c | 2 +- net/ipv4/tcp_ipv4.c | 2 +- net/netlink/af_netlink.c | 2 +- net/unix/af_unix.c | 2 +- 69 files changed, 664 insertions(+), 534 deletions(-) diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index 6eba89025..563c1f07a 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c @@ -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")) diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c index 66fc41064..31931a920 100644 --- a/arch/m68k/kernel/ints.c +++ b/arch/m68k/kernel/ints.c @@ -25,6 +25,7 @@ * which must be served /Roman Zippel */ +#include #include #include #include diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c index 3fefe4e03..60912a5b7 100644 --- a/arch/m68k/mm/kmap.c +++ b/arch/m68k/mm/kmap.c @@ -7,6 +7,7 @@ * used by other architectures /Roman Zippel */ +#include #include #include #include diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 639d5f640..2fe61766a 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c @@ -13,7 +13,6 @@ * for more details. */ -#include #include #include #include diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c index e3c35c60c..0c6871f88 100644 --- a/arch/m68k/q40/config.c +++ b/arch/m68k/q40/config.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c index 39fa5f696..73a9efd32 100644 --- a/arch/m68k/sun3x/time.c +++ b/arch/m68k/sun3x/time.c @@ -4,7 +4,6 @@ * Sun3x-specific time handling */ -#include #include #include #include diff --git a/arch/ppc/kernel/pmac_pic.c b/arch/ppc/kernel/pmac_pic.c index 6a49f1405..6b9d8ca53 100644 --- a/arch/ppc/kernel/pmac_pic.c +++ b/arch/ppc/kernel/pmac_pic.c @@ -1,4 +1,4 @@ - +#include #include #include #include diff --git a/arch/sparc/ap1000/util.c b/arch/sparc/ap1000/util.c index 079c9f4c0..1fe23dc41 100644 --- a/arch/sparc/ap1000/util.c +++ b/arch/sparc/ap1000/util.c @@ -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) { diff --git a/arch/sparc/kernel/init_task.c b/arch/sparc/kernel/init_task.c index 156ed4337..dc2bc9171 100644 --- a/arch/sparc/kernel/init_task.c +++ b/arch/sparc/kernel/init_task.c @@ -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) }; diff --git a/arch/sparc/mm/asyncd.c b/arch/sparc/mm/asyncd.c index 666bf8429..1ae532b7c 100644 --- a/arch/sparc/mm/asyncd.c +++ b/arch/sparc/mm/asyncd.c @@ -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; diff --git a/arch/sparc64/kernel/init_task.c b/arch/sparc64/kernel/init_task.c index 86b6c3dd6..66869404d 100644 --- a/arch/sparc64/kernel/init_task.c +++ b/arch/sparc64/kernel/init_task.c @@ -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) }; diff --git a/arch/sparc64/mm/asyncd.c b/arch/sparc64/mm/asyncd.c index a0d1c8144..d1c7f5d20 100644 --- a/arch/sparc64/mm/asyncd.c +++ b/arch/sparc64/mm/asyncd.c @@ -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; diff --git a/arch/sparc64/solaris/timod.c b/arch/sparc64/solaris/timod.c index 7673702d2..cba34c36d 100644 --- a/arch/sparc64/solaris/timod.c +++ b/arch/sparc64/solaris/timod.c @@ -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)) diff --git a/drivers/block/ide-tape.c b/drivers/block/ide-tape.c index 5b618d8f2..e97087097 100644 --- a/drivers/block/ide-tape.c +++ b/drivers/block/ide-tape.c @@ -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)) { diff --git a/drivers/block/md.c b/drivers/block/md.c index fd36d5073..427d7fa94 100644 --- a/drivers/block/md.c +++ b/drivers/block/md.c @@ -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; diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index ca4e93ed0..da74a771b 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -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; diff --git a/drivers/char/bttv.c b/drivers/char/bttv.c index 12ac86673..cdd37ef46 100644 --- a/drivers/char/bttv.c +++ b/drivers/char/bttv.c @@ -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; diff --git a/drivers/char/bttv.h b/drivers/char/bttv.h index 479384783..bd6721956 100644 --- a/drivers/char/bttv.h +++ b/drivers/char/bttv.h @@ -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; diff --git a/drivers/char/lp.c b/drivers/char/lp.c index 996c15019..4b005b96d 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c @@ -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: diff --git a/drivers/char/msp3400.c b/drivers/char/msp3400.c index 4ccdb8f15..5791e149e 100644 --- a/drivers/char/msp3400.c +++ b/drivers/char/msp3400.c @@ -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; diff --git a/drivers/char/pty.c b/drivers/char/pty.c index dab25c976..1e67c604e 100644 --- a/drivers/char/pty.c +++ b/drivers/char/pty.c @@ -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"; diff --git a/drivers/fc4/fc.c b/drivers/fc4/fc.c index 86b3a3329..8b45510a1 100644 --- a/drivers/fc4/fc.c +++ b/drivers/fc4/fc.c @@ -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; diff --git a/drivers/net/ppp.c b/drivers/net/ppp.c index 069195628..ab73353ac 100644 --- a/drivers/net/ppp.c +++ b/drivers/net/ppp.c @@ -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 diff --git a/drivers/sbus/audio/audio.c b/drivers/sbus/audio/audio.c index b02101941..112effea6 100644 --- a/drivers/sbus/audio/audio.c +++ b/drivers/sbus/audio/audio.c @@ -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; diff --git a/drivers/sbus/audio/dbri.h b/drivers/sbus/audio/dbri.h index 8a3dab4f7..1cd598743 100644 --- a/drivers/sbus/audio/dbri.h +++ b/drivers/sbus/audio/dbri.h @@ -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; diff --git a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c index de9321d40..7f2bf172f 100644 --- a/drivers/sbus/char/bpp.c +++ b/drivers/sbus/char/bpp.c @@ -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; }; diff --git a/drivers/sbus/char/pcikbd.c b/drivers/sbus/char/pcikbd.c index ef19f74b9..673b820c8 100644 --- a/drivers/sbus/char/pcikbd.c +++ b/drivers/sbus/char/pcikbd.c @@ -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; diff --git a/drivers/sbus/char/sab82532.c b/drivers/sbus/char/sab82532.c index bbbd7c670..82c7e61e0 100644 --- a/drivers/sbus/char/sab82532.c +++ b/drivers/sbus/char/sab82532.c @@ -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; diff --git a/drivers/sbus/char/su.c b/drivers/sbus/char/su.c index 70e4f3657..5c2d38f72 100644 --- a/drivers/sbus/char/su.c +++ b/drivers/sbus/char/su.c @@ -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, ' '); diff --git a/drivers/sbus/char/sunkbd.c b/drivers/sbus/char/sunkbd.c index 41ffe9159..7a403a3da 100644 --- a/drivers/sbus/char/sunkbd.c +++ b/drivers/sbus/char/sunkbd.c @@ -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 */ diff --git a/drivers/sbus/char/sunmouse.c b/drivers/sbus/char/sunmouse.c index 8547e47dd..1c71ea53c 100644 --- a/drivers/sbus/char/sunmouse.c +++ b/drivers/sbus/char/sunmouse.c @@ -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; } diff --git a/drivers/sbus/char/vfc.h b/drivers/sbus/char/vfc.h index 72a883cfc..b9ed039ce 100644 --- a/drivers/sbus/char/vfc.h +++ b/drivers/sbus/char/vfc.h @@ -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; diff --git a/drivers/sbus/char/zs.c b/drivers/sbus/char/zs.c index 9195f5a0e..977161435 100644 --- a/drivers/sbus/char/zs.c +++ b/drivers/sbus/char/zs.c @@ -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"); diff --git a/drivers/sbus/char/zs.h b/drivers/sbus/char/zs.h index fd28e4ced..6bf9a11d8 100644 --- a/drivers/sbus/char/zs.h +++ b/drivers/sbus/char/zs.h @@ -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; }; diff --git a/drivers/scsi/pluto.c b/drivers/scsi/pluto.c index 09cfbeb87..4749d152f 100644 --- a/drivers/scsi/pluto.c +++ b/drivers/scsi/pluto.c @@ -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); diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c index a252cb46b..b58c8802c 100644 --- a/fs/coda/psdev.c +++ b/fs/coda/psdev.c @@ -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(); diff --git a/fs/fat/inode.c b/fs/fat/inode.c index 339bcb6f6..1d87d3782 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -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; diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c index 1afee6c7e..f7d4765c9 100644 --- a/fs/ncpfs/inode.c +++ b/fs/ncpfs/inode.c @@ -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 diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c index 1a278911a..35f5fd2ef 100644 --- a/fs/smbfs/inode.c +++ b/fs/smbfs/inode.c @@ -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(); } diff --git a/include/asm-m68k/page.h b/include/asm-m68k/page.h index 87384b8ae..8cc546aac 100644 --- a/include/asm-m68k/page.h +++ b/include/asm-m68k/page.h @@ -1,6 +1,8 @@ #ifndef _M68K_PAGE_H #define _M68K_PAGE_H +#include + /* PAGE_SHIFT determines the page size */ #define PAGE_SHIFT 12 #define PAGE_SIZE (1UL << PAGE_SHIFT) diff --git a/include/asm-m68k/q40_keyboard.h b/include/asm-m68k/q40_keyboard.h index e3712d2e1..9083bc1ec 100644 --- a/include/asm-m68k/q40_keyboard.h +++ b/include/asm-m68k/q40_keyboard.h @@ -9,10 +9,6 @@ */ -#include /* CONFIG_MAGIC_SYSRQ */ - - - #ifdef __KERNEL__ diff --git a/include/asm-m68k/semaphore-helper.h b/include/asm-m68k/semaphore-helper.h index 5e3abe0b5..0ae0b9705 100644 --- a/include/asm-m68k/semaphore-helper.h +++ b/include/asm-m68k/semaphore-helper.h @@ -9,6 +9,8 @@ * m68k version by Andreas Schwab */ +#include + /* * These two _must_ execute atomically wrt each other. */ diff --git a/include/asm-m68k/semaphore.h b/include/asm-m68k/semaphore.h index 271169bbc..787c273a7 100644 --- a/include/asm-m68k/semaphore.h +++ b/include/asm-m68k/semaphore.h @@ -1,7 +1,6 @@ #ifndef _M68K_SEMAPHORE_H #define _M68K_SEMAPHORE_H -#include #include #include diff --git a/include/asm-sparc/asm_offsets.h b/include/asm-sparc/asm_offsets.h index c45a7b4a7..f8ffd64a2 100644 --- a/include/asm-sparc/asm_offsets.h +++ b/include/asm-sparc/asm_offsets.h @@ -77,110 +77,110 @@ #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 @@ -195,46 +195,46 @@ #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 @@ -352,110 +352,110 @@ #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 @@ -470,46 +470,46 @@ #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 diff --git a/include/asm-sparc/audioio.h b/include/asm-sparc/audioio.h index ca5e06538..27543806b 100644 --- a/include/asm-sparc/audioio.h +++ b/include/asm-sparc/audioio.h @@ -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; diff --git a/include/asm-sparc/semaphore.h b/include/asm-sparc/semaphore.h index 1123c966e..9c647a571 100644 --- a/include/asm-sparc/semaphore.h +++ b/include/asm-sparc/semaphore.h @@ -6,28 +6,71 @@ #ifdef __KERNEL__ #include +#include 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; diff --git a/include/asm-sparc64/asm_offsets.h b/include/asm-sparc64/asm_offsets.h index 3301515c5..e1e8355a1 100644 --- a/include/asm-sparc64/asm_offsets.h +++ b/include/asm-sparc64/asm_offsets.h @@ -77,112 +77,112 @@ #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 @@ -196,48 +196,48 @@ #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 @@ -363,112 +363,112 @@ #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 @@ -482,48 +482,48 @@ #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 @@ -647,112 +647,112 @@ #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 @@ -766,48 +766,48 @@ #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 diff --git a/include/asm-sparc64/audioio.h b/include/asm-sparc64/audioio.h index ca5e06538..27543806b 100644 --- a/include/asm-sparc64/audioio.h +++ b/include/asm-sparc64/audioio.h @@ -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; diff --git a/include/asm-sparc64/sab82532.h b/include/asm-sparc64/sab82532.h index 169e88d02..8cb99a22f 100644 --- a/include/asm-sparc64/sab82532.h +++ b/include/asm-sparc64/sab82532.h @@ -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; }; diff --git a/include/asm-sparc64/semaphore.h b/include/asm-sparc64/semaphore.h index e35a66513..e119514c4 100644 --- a/include/asm-sparc64/semaphore.h +++ b/include/asm-sparc64/semaphore.h @@ -10,21 +10,62 @@ 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 diff --git a/include/asm-sparc64/spinlock.h b/include/asm-sparc64/spinlock.h index 1d3b35020..930e32f65 100644 --- a/include/asm-sparc64/spinlock.h +++ b/include/asm-sparc64/spinlock.h @@ -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); diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h index 2de8ff1ff..77d2c4ebe 100644 --- a/include/linux/coda_psdev.h +++ b/include/linux/coda_psdev.h @@ -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; }; diff --git a/include/linux/if_pppvar.h b/include/linux/if_pppvar.h index d6cd0c25b..e01e4d23f 100644 --- a/include/linux/if_pppvar.h +++ b/include/linux/if_pppvar.h @@ -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 */ diff --git a/include/linux/msdos_fs_sb.h b/include/linux/msdos_fs_sb.h index 4497eeedb..dcec07e0a 100644 --- a/include/linux/msdos_fs_sb.h +++ b/include/linux/msdos_fs_sb.h @@ -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 */ diff --git a/include/linux/ncp_fs_sb.h b/include/linux/ncp_fs_sb.h index adf1eef66..04980a879 100644 --- a/include/linux/ncp_fs_sb.h +++ b/include/linux/ncp_fs_sb.h @@ -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; diff --git a/include/linux/parport.h b/include/linux/parport.h index 3adbc5ab3..d324c317b 100644 --- a/include/linux/parport.h +++ b/include/linux/parport.h @@ -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; diff --git a/include/linux/raid5.h b/include/linux/raid5.h index 5efd211a2..655d41d54 100644 --- a/include/linux/raid5.h +++ b/include/linux/raid5.h @@ -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 diff --git a/include/linux/smb_fs_sb.h b/include/linux/smb_fs_sb.h index cedbb5ab8..31052af1f 100644 --- a/include/linux/smb_fs_sb.h +++ b/include/linux/smb_fs_sb.h @@ -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; diff --git a/include/linux/wait.h b/include/linux/wait.h index 8d6905648..2831d5e78 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -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 } diff --git a/kernel/sched.c b/kernel/sched.c index 942c5a570..aa7bc9de2 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -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); } diff --git a/net/core/firewall.c b/net/core/firewall.c index fc7b1a517..7ca90f49a 100644 --- a/net/core/firewall.c +++ b/net/core/firewall.c @@ -13,7 +13,7 @@ #include #include -struct semaphore firewall_sem = MUTEX; +DECLARE_MUTEX(firewall_sem); static int firewall_policy[NPROTO]; static struct firewall_ops *firewall_chain[NPROTO]; diff --git a/net/core/sock.c b/net/core/sock.c index 3b44deb72..1473de7a3 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -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, * Fred N. van Kempen, diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index bbdba8efe..f1f782007 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -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, * Fred N. van Kempen, diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 7ba485ab8..f0b8553c9 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -3,7 +3,7 @@ * * Alan Cox, * - * 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 diff --git a/net/ipv4/ip_masq_mfw.c b/net/ipv4/ip_masq_mfw.c index dc38b1712..555342e88 100644 --- a/net/ipv4/ip_masq_mfw.c +++ b/net/ipv4/ip_masq_mfw.c @@ -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 diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 2a1f93142..6b8f6250d 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -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, * Fred N. van Kempen, diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 8d9db4979..66be537c1 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -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 * diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 9247bf99c..042b4773a 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -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) { diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index e0bb1e70c..1d2b14787 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -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. -- 2.11.4.GIT