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"))
* which must be served /Roman Zippel
*/
+#include <linux/config.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/kernel_stat.h>
* used by other architectures /Roman Zippel
*/
+#include <linux/config.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/string.h>
* for more details.
*/
-#include <linux/config.h>
#include <stdarg.h>
#include <linux/types.h>
#include <linux/kernel.h>
*/
#include <stdarg.h>
+#include <linux/config.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/mm.h>
* Sun3x-specific time handling
*/
-#include <linux/config.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/sched.h>
-
+#include <linux/config.h>
#include <linux/stddef.h>
#include <linux/init.h>
#include <linux/sched.h>
}
-static struct wait_queue *timer_wait = NULL;
+static DECLARE_WAIT_QUEUE_HEAD(timer_wait);
static void wait_callback(unsigned long _ignored)
{
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) };
-/* $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.
/*
* 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;
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) };
-/* $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.
/*
* 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;
-/* $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)
#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
#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)
{
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);
#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))
*/
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)) {
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;
void md_unregister_thread (struct md_thread *thread)
{
- struct semaphore sem = MUTEX_LOCKED;
+ DECLARE_MUTEX_LOCKED(sem);
thread->sem = &sem;
thread->run = NULL;
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;
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;
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;
/* 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)
LP_F(minor) &= ~LP_BUSY;
return -ENOMEM;
}
+ init_waitqueue_head(&(lp_table[minor].wait_q));
return 0;
}
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:
/* thread */
struct task_struct *thread;
- struct wait_queue *wq;
+ wait_queue_head_t wq;
struct semaphore *notify;
int active,restart,rmmod;
current->fs->umask = 0;
strcpy(current->comm,"msp3400");
- msp->wq = NULL;
msp->thread = current;
#ifdef __SMP__
{
unsigned long flags;
struct msp3400c *msp = data;
- struct semaphore sem = MUTEX_LOCKED;
+ DECLARE_MUTEX_LOCKED(sem);
int i, val;
/* lock_kernel(); */
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)
{
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;
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)) {
/* startup control thread */
MOD_INC_USE_COUNT;
- msp->wq = NULL;
msp->notify = &sem;
kernel_thread(msp3400c_thread, (void *)msp, 0);
down(&sem);
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;
#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;
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";
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);
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);
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);
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;
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
* 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;
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;
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;
};
-/* $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)
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];
};
* 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)
{
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;
-/* $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)
* 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)
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;
__initfunc(static inline void show_serial_version(void))
{
- char *revision = "$Revision: 1.30 $";
+ char *revision = "$Revision: 1.31 $";
char *version, *p;
version = strchr(revision, ' ');
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;
-/* $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)
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;
* 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)
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;
*/
__initfunc(static __inline__ void show_su_version(void))
{
- char *revision = "$Revision: 1.18 $";
+ char *revision = "$Revision: 1.19 $";
char *version, *p;
version = strchr(revision, ' ');
}
#ifndef CONFIG_PCI
-struct wait_queue * keypress_wait = NULL;
+DECLARE_WAIT_QUEUE_HEAD(keypress_wait);
#endif
int keyboard_wait_for_keypress(struct console *co)
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
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 */
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 */
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)
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;
}
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;
-/* $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)
* 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)
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;
static void show_serial_version(void)
{
- char *revision = "$Revision: 1.41 $";
+ char *revision = "$Revision: 1.42 $";
char *version, *p;
version = strchr(revision, ' ');
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");
-/* $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)
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;
};
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);
}
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();
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;
#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.
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;
{
DPRINTK(KERN_DEBUG "ncpfs: init_module called\n");
- read_sem = MUTEX;
+ init_MUTEX(&read_sem);
read_nwinfo = NULL;
#ifdef DEBUG_NCP_MALLOC
}
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)
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;
smb_current_vmalloced = 0;
#endif
- read_semaphore = MUTEX;
+ init_MUTEX(&read_semaphore);
return init_smb_fs();
}
#ifndef _M68K_PAGE_H
#define _M68K_PAGE_H
+#include <linux/config.h>
+
/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
*/
-#include <linux/config.h> /* CONFIG_MAGIC_SYSRQ */
-
-
-
#ifdef __KERNEL__
* m68k version by Andreas Schwab
*/
+#include <linux/config.h>
+
/*
* These two _must_ execute atomically wrt each other.
*/
#ifndef _M68K_SEMAPHORE_H
#define _M68K_SEMAPHORE_H
-#include <linux/config.h>
#include <linux/linkage.h>
#include <asm/system.h>
#define AOFF_task_tarray_ptr 0x0000008c
#define ASIZ_task_tarray_ptr 0x00000004
#define AOFF_task_wait_chldexit 0x00000090
-#define ASIZ_task_wait_chldexit 0x00000004
-#define AOFF_task_vfork_sem 0x00000094
+#define ASIZ_task_wait_chldexit 0x00000014
+#define AOFF_task_vfork_sem 0x000000a4
#define ASIZ_task_vfork_sem 0x00000004
-#define AOFF_task_policy 0x00000098
+#define AOFF_task_policy 0x000000a8
#define ASIZ_task_policy 0x00000004
-#define AOFF_task_rt_priority 0x0000009c
+#define AOFF_task_rt_priority 0x000000ac
#define ASIZ_task_rt_priority 0x00000004
-#define AOFF_task_it_real_value 0x000000a0
+#define AOFF_task_it_real_value 0x000000b0
#define ASIZ_task_it_real_value 0x00000004
-#define AOFF_task_it_prof_value 0x000000a4
+#define AOFF_task_it_prof_value 0x000000b4
#define ASIZ_task_it_prof_value 0x00000004
-#define AOFF_task_it_virt_value 0x000000a8
+#define AOFF_task_it_virt_value 0x000000b8
#define ASIZ_task_it_virt_value 0x00000004
-#define AOFF_task_it_real_incr 0x000000ac
+#define AOFF_task_it_real_incr 0x000000bc
#define ASIZ_task_it_real_incr 0x00000004
-#define AOFF_task_it_prof_incr 0x000000b0
+#define AOFF_task_it_prof_incr 0x000000c0
#define ASIZ_task_it_prof_incr 0x00000004
-#define AOFF_task_it_virt_incr 0x000000b4
+#define AOFF_task_it_virt_incr 0x000000c4
#define ASIZ_task_it_virt_incr 0x00000004
-#define AOFF_task_real_timer 0x000000b8
+#define AOFF_task_real_timer 0x000000c8
#define ASIZ_task_real_timer 0x00000014
-#define AOFF_task_times 0x000000cc
+#define AOFF_task_times 0x000000dc
#define ASIZ_task_times 0x00000010
-#define AOFF_task_start_time 0x000000dc
+#define AOFF_task_start_time 0x000000ec
#define ASIZ_task_start_time 0x00000004
-#define AOFF_task_per_cpu_utime 0x000000e0
+#define AOFF_task_per_cpu_utime 0x000000f0
#define ASIZ_task_per_cpu_utime 0x00000004
-#define AOFF_task_min_flt 0x000000e8
+#define AOFF_task_min_flt 0x000000f8
#define ASIZ_task_min_flt 0x00000004
-#define AOFF_task_maj_flt 0x000000ec
+#define AOFF_task_maj_flt 0x000000fc
#define ASIZ_task_maj_flt 0x00000004
-#define AOFF_task_nswap 0x000000f0
+#define AOFF_task_nswap 0x00000100
#define ASIZ_task_nswap 0x00000004
-#define AOFF_task_cmin_flt 0x000000f4
+#define AOFF_task_cmin_flt 0x00000104
#define ASIZ_task_cmin_flt 0x00000004
-#define AOFF_task_cmaj_flt 0x000000f8
+#define AOFF_task_cmaj_flt 0x00000108
#define ASIZ_task_cmaj_flt 0x00000004
-#define AOFF_task_cnswap 0x000000fc
+#define AOFF_task_cnswap 0x0000010c
#define ASIZ_task_cnswap 0x00000004
-#define AOFF_task_uid 0x00000102
+#define AOFF_task_uid 0x00000112
#define ASIZ_task_uid 0x00000002
-#define AOFF_task_euid 0x00000104
+#define AOFF_task_euid 0x00000114
#define ASIZ_task_euid 0x00000002
-#define AOFF_task_suid 0x00000106
+#define AOFF_task_suid 0x00000116
#define ASIZ_task_suid 0x00000002
-#define AOFF_task_fsuid 0x00000108
+#define AOFF_task_fsuid 0x00000118
#define ASIZ_task_fsuid 0x00000002
-#define AOFF_task_gid 0x0000010a
+#define AOFF_task_gid 0x0000011a
#define ASIZ_task_gid 0x00000002
-#define AOFF_task_egid 0x0000010c
+#define AOFF_task_egid 0x0000011c
#define ASIZ_task_egid 0x00000002
-#define AOFF_task_sgid 0x0000010e
+#define AOFF_task_sgid 0x0000011e
#define ASIZ_task_sgid 0x00000002
-#define AOFF_task_fsgid 0x00000110
+#define AOFF_task_fsgid 0x00000120
#define ASIZ_task_fsgid 0x00000002
-#define AOFF_task_ngroups 0x00000114
+#define AOFF_task_ngroups 0x00000124
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x00000118
+#define AOFF_task_groups 0x00000128
#define ASIZ_task_groups 0x00000040
-#define AOFF_task_cap_effective 0x00000158
+#define AOFF_task_cap_effective 0x00000168
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x0000015c
+#define AOFF_task_cap_inheritable 0x0000016c
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x00000160
+#define AOFF_task_cap_permitted 0x00000170
#define ASIZ_task_cap_permitted 0x00000004
-#define AOFF_task_user 0x00000164
+#define AOFF_task_user 0x00000174
#define ASIZ_task_user 0x00000004
-#define AOFF_task_rlim 0x00000168
+#define AOFF_task_rlim 0x00000178
#define ASIZ_task_rlim 0x00000050
-#define AOFF_task_used_math 0x000001b8
+#define AOFF_task_used_math 0x000001c8
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_comm 0x000001ba
+#define AOFF_task_comm 0x000001ca
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x000001cc
+#define AOFF_task_link_count 0x000001dc
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x000001d0
+#define AOFF_task_tty 0x000001e0
#define ASIZ_task_tty 0x00000004
-#define AOFF_task_semundo 0x000001d4
+#define AOFF_task_semundo 0x000001e4
#define ASIZ_task_semundo 0x00000004
-#define AOFF_task_semsleeping 0x000001d8
+#define AOFF_task_semsleeping 0x000001e8
#define ASIZ_task_semsleeping 0x00000004
-#define AOFF_task_tss 0x000001e0
+#define AOFF_task_tss 0x000001f0
#define ASIZ_task_tss 0x00000388
-#define AOFF_task_fs 0x00000568
+#define AOFF_task_fs 0x00000578
#define ASIZ_task_fs 0x00000004
-#define AOFF_task_files 0x0000056c
+#define AOFF_task_files 0x0000057c
#define ASIZ_task_files 0x00000004
-#define AOFF_task_mm 0x00000570
+#define AOFF_task_mm 0x00000580
#define ASIZ_task_mm 0x00000004
-#define AOFF_task_sigmask_lock 0x00000574
+#define AOFF_task_sigmask_lock 0x00000584
#define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig 0x00000578
+#define AOFF_task_sig 0x00000588
#define ASIZ_task_sig 0x00000004
-#define AOFF_task_signal 0x0000057c
+#define AOFF_task_signal 0x0000058c
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000584
+#define AOFF_task_blocked 0x00000594
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x0000058c
+#define AOFF_task_sigqueue 0x0000059c
#define ASIZ_task_sigqueue 0x00000004
-#define AOFF_task_sigqueue_tail 0x00000590
+#define AOFF_task_sigqueue_tail 0x000005a0
#define ASIZ_task_sigqueue_tail 0x00000004
-#define AOFF_task_sas_ss_sp 0x00000594
+#define AOFF_task_sas_ss_sp 0x000005a4
#define ASIZ_task_sas_ss_sp 0x00000004
-#define AOFF_task_sas_ss_size 0x00000598
+#define AOFF_task_sas_ss_size 0x000005a8
#define ASIZ_task_sas_ss_size 0x00000004
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000004
#define AOFF_mm_map_count 0x00000014
#define ASIZ_mm_map_count 0x00000004
#define AOFF_mm_mmap_sem 0x00000018
-#define ASIZ_mm_mmap_sem 0x0000000c
-#define AOFF_mm_context 0x00000024
+#define ASIZ_mm_mmap_sem 0x00000020
+#define AOFF_mm_context 0x00000038
#define ASIZ_mm_context 0x00000004
-#define AOFF_mm_start_code 0x00000028
+#define AOFF_mm_start_code 0x0000003c
#define ASIZ_mm_start_code 0x00000004
-#define AOFF_mm_end_code 0x0000002c
+#define AOFF_mm_end_code 0x00000040
#define ASIZ_mm_end_code 0x00000004
-#define AOFF_mm_start_data 0x00000030
+#define AOFF_mm_start_data 0x00000044
#define ASIZ_mm_start_data 0x00000004
-#define AOFF_mm_end_data 0x00000034
+#define AOFF_mm_end_data 0x00000048
#define ASIZ_mm_end_data 0x00000004
-#define AOFF_mm_start_brk 0x00000038
+#define AOFF_mm_start_brk 0x0000004c
#define ASIZ_mm_start_brk 0x00000004
-#define AOFF_mm_brk 0x0000003c
+#define AOFF_mm_brk 0x00000050
#define ASIZ_mm_brk 0x00000004
-#define AOFF_mm_start_stack 0x00000040
+#define AOFF_mm_start_stack 0x00000054
#define ASIZ_mm_start_stack 0x00000004
-#define AOFF_mm_arg_start 0x00000044
+#define AOFF_mm_arg_start 0x00000058
#define ASIZ_mm_arg_start 0x00000004
-#define AOFF_mm_arg_end 0x00000048
+#define AOFF_mm_arg_end 0x0000005c
#define ASIZ_mm_arg_end 0x00000004
-#define AOFF_mm_env_start 0x0000004c
+#define AOFF_mm_env_start 0x00000060
#define ASIZ_mm_env_start 0x00000004
-#define AOFF_mm_env_end 0x00000050
+#define AOFF_mm_env_end 0x00000064
#define ASIZ_mm_env_end 0x00000004
-#define AOFF_mm_rss 0x00000054
+#define AOFF_mm_rss 0x00000068
#define ASIZ_mm_rss 0x00000004
-#define AOFF_mm_total_vm 0x00000058
+#define AOFF_mm_total_vm 0x0000006c
#define ASIZ_mm_total_vm 0x00000004
-#define AOFF_mm_locked_vm 0x0000005c
+#define AOFF_mm_locked_vm 0x00000070
#define ASIZ_mm_locked_vm 0x00000004
-#define AOFF_mm_def_flags 0x00000060
+#define AOFF_mm_def_flags 0x00000074
#define ASIZ_mm_def_flags 0x00000004
-#define AOFF_mm_cpu_vm_mask 0x00000064
+#define AOFF_mm_cpu_vm_mask 0x00000078
#define ASIZ_mm_cpu_vm_mask 0x00000004
-#define AOFF_mm_swap_cnt 0x00000068
+#define AOFF_mm_swap_cnt 0x0000007c
#define ASIZ_mm_swap_cnt 0x00000004
-#define AOFF_mm_swap_address 0x0000006c
+#define AOFF_mm_swap_address 0x00000080
#define ASIZ_mm_swap_address 0x00000004
-#define AOFF_mm_segments 0x00000070
+#define AOFF_mm_segments 0x00000084
#define ASIZ_mm_segments 0x00000004
#define AOFF_thread_uwinmask 0x00000000
#define ASIZ_thread_uwinmask 0x00000004
#define AOFF_task_tarray_ptr 0x0000008c
#define ASIZ_task_tarray_ptr 0x00000004
#define AOFF_task_wait_chldexit 0x00000090
-#define ASIZ_task_wait_chldexit 0x00000004
-#define AOFF_task_vfork_sem 0x00000094
+#define ASIZ_task_wait_chldexit 0x00000018
+#define AOFF_task_vfork_sem 0x000000a8
#define ASIZ_task_vfork_sem 0x00000004
-#define AOFF_task_policy 0x00000098
+#define AOFF_task_policy 0x000000ac
#define ASIZ_task_policy 0x00000004
-#define AOFF_task_rt_priority 0x0000009c
+#define AOFF_task_rt_priority 0x000000b0
#define ASIZ_task_rt_priority 0x00000004
-#define AOFF_task_it_real_value 0x000000a0
+#define AOFF_task_it_real_value 0x000000b4
#define ASIZ_task_it_real_value 0x00000004
-#define AOFF_task_it_prof_value 0x000000a4
+#define AOFF_task_it_prof_value 0x000000b8
#define ASIZ_task_it_prof_value 0x00000004
-#define AOFF_task_it_virt_value 0x000000a8
+#define AOFF_task_it_virt_value 0x000000bc
#define ASIZ_task_it_virt_value 0x00000004
-#define AOFF_task_it_real_incr 0x000000ac
+#define AOFF_task_it_real_incr 0x000000c0
#define ASIZ_task_it_real_incr 0x00000004
-#define AOFF_task_it_prof_incr 0x000000b0
+#define AOFF_task_it_prof_incr 0x000000c4
#define ASIZ_task_it_prof_incr 0x00000004
-#define AOFF_task_it_virt_incr 0x000000b4
+#define AOFF_task_it_virt_incr 0x000000c8
#define ASIZ_task_it_virt_incr 0x00000004
-#define AOFF_task_real_timer 0x000000b8
+#define AOFF_task_real_timer 0x000000cc
#define ASIZ_task_real_timer 0x00000014
-#define AOFF_task_times 0x000000cc
+#define AOFF_task_times 0x000000e0
#define ASIZ_task_times 0x00000010
-#define AOFF_task_start_time 0x000000dc
+#define AOFF_task_start_time 0x000000f0
#define ASIZ_task_start_time 0x00000004
-#define AOFF_task_per_cpu_utime 0x000000e0
+#define AOFF_task_per_cpu_utime 0x000000f4
#define ASIZ_task_per_cpu_utime 0x00000080
-#define AOFF_task_min_flt 0x000001e0
+#define AOFF_task_min_flt 0x000001f4
#define ASIZ_task_min_flt 0x00000004
-#define AOFF_task_maj_flt 0x000001e4
+#define AOFF_task_maj_flt 0x000001f8
#define ASIZ_task_maj_flt 0x00000004
-#define AOFF_task_nswap 0x000001e8
+#define AOFF_task_nswap 0x000001fc
#define ASIZ_task_nswap 0x00000004
-#define AOFF_task_cmin_flt 0x000001ec
+#define AOFF_task_cmin_flt 0x00000200
#define ASIZ_task_cmin_flt 0x00000004
-#define AOFF_task_cmaj_flt 0x000001f0
+#define AOFF_task_cmaj_flt 0x00000204
#define ASIZ_task_cmaj_flt 0x00000004
-#define AOFF_task_cnswap 0x000001f4
+#define AOFF_task_cnswap 0x00000208
#define ASIZ_task_cnswap 0x00000004
-#define AOFF_task_uid 0x000001fa
+#define AOFF_task_uid 0x0000020e
#define ASIZ_task_uid 0x00000002
-#define AOFF_task_euid 0x000001fc
+#define AOFF_task_euid 0x00000210
#define ASIZ_task_euid 0x00000002
-#define AOFF_task_suid 0x000001fe
+#define AOFF_task_suid 0x00000212
#define ASIZ_task_suid 0x00000002
-#define AOFF_task_fsuid 0x00000200
+#define AOFF_task_fsuid 0x00000214
#define ASIZ_task_fsuid 0x00000002
-#define AOFF_task_gid 0x00000202
+#define AOFF_task_gid 0x00000216
#define ASIZ_task_gid 0x00000002
-#define AOFF_task_egid 0x00000204
+#define AOFF_task_egid 0x00000218
#define ASIZ_task_egid 0x00000002
-#define AOFF_task_sgid 0x00000206
+#define AOFF_task_sgid 0x0000021a
#define ASIZ_task_sgid 0x00000002
-#define AOFF_task_fsgid 0x00000208
+#define AOFF_task_fsgid 0x0000021c
#define ASIZ_task_fsgid 0x00000002
-#define AOFF_task_ngroups 0x0000020c
+#define AOFF_task_ngroups 0x00000220
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x00000210
+#define AOFF_task_groups 0x00000224
#define ASIZ_task_groups 0x00000040
-#define AOFF_task_cap_effective 0x00000250
+#define AOFF_task_cap_effective 0x00000264
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x00000254
+#define AOFF_task_cap_inheritable 0x00000268
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x00000258
+#define AOFF_task_cap_permitted 0x0000026c
#define ASIZ_task_cap_permitted 0x00000004
-#define AOFF_task_user 0x0000025c
+#define AOFF_task_user 0x00000270
#define ASIZ_task_user 0x00000004
-#define AOFF_task_rlim 0x00000260
+#define AOFF_task_rlim 0x00000274
#define ASIZ_task_rlim 0x00000050
-#define AOFF_task_used_math 0x000002b0
+#define AOFF_task_used_math 0x000002c4
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_comm 0x000002b2
+#define AOFF_task_comm 0x000002c6
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x000002c4
+#define AOFF_task_link_count 0x000002d8
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x000002c8
+#define AOFF_task_tty 0x000002dc
#define ASIZ_task_tty 0x00000004
-#define AOFF_task_semundo 0x000002cc
+#define AOFF_task_semundo 0x000002e0
#define ASIZ_task_semundo 0x00000004
-#define AOFF_task_semsleeping 0x000002d0
+#define AOFF_task_semsleeping 0x000002e4
#define ASIZ_task_semsleeping 0x00000004
-#define AOFF_task_tss 0x000002d8
+#define AOFF_task_tss 0x000002e8
#define ASIZ_task_tss 0x00000388
-#define AOFF_task_fs 0x00000660
+#define AOFF_task_fs 0x00000670
#define ASIZ_task_fs 0x00000004
-#define AOFF_task_files 0x00000664
+#define AOFF_task_files 0x00000674
#define ASIZ_task_files 0x00000004
-#define AOFF_task_mm 0x00000668
+#define AOFF_task_mm 0x00000678
#define ASIZ_task_mm 0x00000004
-#define AOFF_task_sigmask_lock 0x0000066c
+#define AOFF_task_sigmask_lock 0x0000067c
#define ASIZ_task_sigmask_lock 0x00000008
-#define AOFF_task_sig 0x00000674
+#define AOFF_task_sig 0x00000684
#define ASIZ_task_sig 0x00000004
-#define AOFF_task_signal 0x00000678
+#define AOFF_task_signal 0x00000688
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000680
+#define AOFF_task_blocked 0x00000690
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x00000688
+#define AOFF_task_sigqueue 0x00000698
#define ASIZ_task_sigqueue 0x00000004
-#define AOFF_task_sigqueue_tail 0x0000068c
+#define AOFF_task_sigqueue_tail 0x0000069c
#define ASIZ_task_sigqueue_tail 0x00000004
-#define AOFF_task_sas_ss_sp 0x00000690
+#define AOFF_task_sas_ss_sp 0x000006a0
#define ASIZ_task_sas_ss_sp 0x00000004
-#define AOFF_task_sas_ss_size 0x00000694
+#define AOFF_task_sas_ss_size 0x000006a4
#define ASIZ_task_sas_ss_size 0x00000004
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000004
#define AOFF_mm_map_count 0x00000014
#define ASIZ_mm_map_count 0x00000004
#define AOFF_mm_mmap_sem 0x00000018
-#define ASIZ_mm_mmap_sem 0x0000000c
-#define AOFF_mm_context 0x00000024
+#define ASIZ_mm_mmap_sem 0x00000024
+#define AOFF_mm_context 0x0000003c
#define ASIZ_mm_context 0x00000004
-#define AOFF_mm_start_code 0x00000028
+#define AOFF_mm_start_code 0x00000040
#define ASIZ_mm_start_code 0x00000004
-#define AOFF_mm_end_code 0x0000002c
+#define AOFF_mm_end_code 0x00000044
#define ASIZ_mm_end_code 0x00000004
-#define AOFF_mm_start_data 0x00000030
+#define AOFF_mm_start_data 0x00000048
#define ASIZ_mm_start_data 0x00000004
-#define AOFF_mm_end_data 0x00000034
+#define AOFF_mm_end_data 0x0000004c
#define ASIZ_mm_end_data 0x00000004
-#define AOFF_mm_start_brk 0x00000038
+#define AOFF_mm_start_brk 0x00000050
#define ASIZ_mm_start_brk 0x00000004
-#define AOFF_mm_brk 0x0000003c
+#define AOFF_mm_brk 0x00000054
#define ASIZ_mm_brk 0x00000004
-#define AOFF_mm_start_stack 0x00000040
+#define AOFF_mm_start_stack 0x00000058
#define ASIZ_mm_start_stack 0x00000004
-#define AOFF_mm_arg_start 0x00000044
+#define AOFF_mm_arg_start 0x0000005c
#define ASIZ_mm_arg_start 0x00000004
-#define AOFF_mm_arg_end 0x00000048
+#define AOFF_mm_arg_end 0x00000060
#define ASIZ_mm_arg_end 0x00000004
-#define AOFF_mm_env_start 0x0000004c
+#define AOFF_mm_env_start 0x00000064
#define ASIZ_mm_env_start 0x00000004
-#define AOFF_mm_env_end 0x00000050
+#define AOFF_mm_env_end 0x00000068
#define ASIZ_mm_env_end 0x00000004
-#define AOFF_mm_rss 0x00000054
+#define AOFF_mm_rss 0x0000006c
#define ASIZ_mm_rss 0x00000004
-#define AOFF_mm_total_vm 0x00000058
+#define AOFF_mm_total_vm 0x00000070
#define ASIZ_mm_total_vm 0x00000004
-#define AOFF_mm_locked_vm 0x0000005c
+#define AOFF_mm_locked_vm 0x00000074
#define ASIZ_mm_locked_vm 0x00000004
-#define AOFF_mm_def_flags 0x00000060
+#define AOFF_mm_def_flags 0x00000078
#define ASIZ_mm_def_flags 0x00000004
-#define AOFF_mm_cpu_vm_mask 0x00000064
+#define AOFF_mm_cpu_vm_mask 0x0000007c
#define ASIZ_mm_cpu_vm_mask 0x00000004
-#define AOFF_mm_swap_cnt 0x00000068
+#define AOFF_mm_swap_cnt 0x00000080
#define ASIZ_mm_swap_cnt 0x00000004
-#define AOFF_mm_swap_address 0x0000006c
+#define AOFF_mm_swap_address 0x00000084
#define ASIZ_mm_swap_address 0x00000004
-#define AOFF_mm_segments 0x00000070
+#define AOFF_mm_segments 0x00000088
#define ASIZ_mm_segments 0x00000004
#define AOFF_thread_uwinmask 0x00000000
#define ASIZ_thread_uwinmask 0x00000004
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;
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. */
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;
#ifdef __KERNEL__
#include <asm/atomic.h>
+#include <linux/wait.h>
struct semaphore {
atomic_t count;
atomic_t waking;
- struct wait_queue * wait;
+ wait_queue_head_t wait;
+#if WAITQUEUE_DEBUG
+ long __magic;
+#endif
};
-#define MUTEX ((struct semaphore) { ATOMIC_INIT(1), ATOMIC_INIT(0), NULL })
-#define MUTEX_LOCKED ((struct semaphore) { ATOMIC_INIT(0), ATOMIC_INIT(0), NULL })
+#if WAITQUEUE_DEBUG
+# define __SEM_DEBUG_INIT(name) \
+ , (long)&(name).__magic
+#else
+# define __SEM_DEBUG_INIT(name)
+#endif
+
+#define __SEMAPHORE_INITIALIZER(name,count) \
+{ ATOMIC_INIT(count), ATOMIC_INIT(0), __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) \
+ __SEM_DEBUG_INIT(name) }
+
+#define __MUTEX_INITIALIZER(name) \
+ __SEMAPHORE_INITIALIZER(name,1)
+
+#define __DECLARE_SEMAPHORE_GENERIC(name,count) \
+ struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
+
+#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
+#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
+
+extern inline void sema_init (struct semaphore *sem, int val)
+{
+ atomic_set(&sem->count, val);
+ atomic_set(&sem->waking, 0);
+ init_waitqueue_head(&sem->wait);
+#if WAITQUEUE_DEBUG
+ sem->__magic = (long)&sem->__magic;
+#endif
+}
+
+static inline void init_MUTEX (struct semaphore *sem)
+{
+ sema_init(sem, 1);
+}
+
+static inline void init_MUTEX_LOCKED (struct semaphore *sem)
+{
+ sema_init(sem, 0);
+}
extern void __down(struct semaphore * sem);
extern int __down_interruptible(struct semaphore * sem);
extern int __down_trylock(struct semaphore * sem);
extern void __up(struct semaphore * sem);
-#define sema_init(sem, val) atomic_set(&((sem)->count), val)
-
extern inline void down(struct semaphore * sem)
{
register atomic_t *ptr asm("g1");
register int increment asm("g2");
+#if WAITQUEUE_DEBUG
+ CHECK_MAGIC(sem->__magic);
+#endif
+
ptr = (atomic_t *) __atomic_fool_gcc(sem);
increment = 1;
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;
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;
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;
#define AOFF_task_tarray_ptr 0x000000e8
#define ASIZ_task_tarray_ptr 0x00000008
#define AOFF_task_wait_chldexit 0x000000f0
-#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_vfork_sem 0x000000f8
+#define ASIZ_task_wait_chldexit 0x00000028
+#define AOFF_task_vfork_sem 0x00000118
#define ASIZ_task_vfork_sem 0x00000008
-#define AOFF_task_policy 0x00000100
+#define AOFF_task_policy 0x00000120
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x00000108
+#define AOFF_task_rt_priority 0x00000128
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x00000110
+#define AOFF_task_it_real_value 0x00000130
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x00000118
+#define AOFF_task_it_prof_value 0x00000138
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x00000120
+#define AOFF_task_it_virt_value 0x00000140
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x00000128
+#define AOFF_task_it_real_incr 0x00000148
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000130
+#define AOFF_task_it_prof_incr 0x00000150
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000138
+#define AOFF_task_it_virt_incr 0x00000158
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000140
+#define AOFF_task_real_timer 0x00000160
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000168
+#define AOFF_task_times 0x00000188
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000188
+#define AOFF_task_start_time 0x000001a8
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000190
+#define AOFF_task_per_cpu_utime 0x000001b0
#define ASIZ_task_per_cpu_utime 0x00000008
-#define AOFF_task_min_flt 0x000001a0
+#define AOFF_task_min_flt 0x000001c0
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x000001a8
+#define AOFF_task_maj_flt 0x000001c8
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x000001b0
+#define AOFF_task_nswap 0x000001d0
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x000001b8
+#define AOFF_task_cmin_flt 0x000001d8
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x000001c0
+#define AOFF_task_cmaj_flt 0x000001e0
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x000001c8
+#define AOFF_task_cnswap 0x000001e8
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_uid 0x000001d4
+#define AOFF_task_uid 0x000001f4
#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000001d8
+#define AOFF_task_euid 0x000001f8
#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000001dc
+#define AOFF_task_suid 0x000001fc
#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000001e0
+#define AOFF_task_fsuid 0x00000200
#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x000001e4
+#define AOFF_task_gid 0x00000204
#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x000001e8
+#define AOFF_task_egid 0x00000208
#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000001ec
+#define AOFF_task_sgid 0x0000020c
#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x000001f0
+#define AOFF_task_fsgid 0x00000210
#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_ngroups 0x000001f4
+#define AOFF_task_ngroups 0x00000214
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x000001f8
+#define AOFF_task_groups 0x00000218
#define ASIZ_task_groups 0x00000080
-#define AOFF_task_cap_effective 0x00000278
+#define AOFF_task_cap_effective 0x00000298
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x0000027c
+#define AOFF_task_cap_inheritable 0x0000029c
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x00000280
+#define AOFF_task_cap_permitted 0x000002a0
#define ASIZ_task_cap_permitted 0x00000004
-#define AOFF_task_user 0x00000288
+#define AOFF_task_user 0x000002a8
#define ASIZ_task_user 0x00000008
-#define AOFF_task_rlim 0x00000290
+#define AOFF_task_rlim 0x000002b0
#define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math 0x00000330
+#define AOFF_task_used_math 0x00000350
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_comm 0x00000332
+#define AOFF_task_comm 0x00000352
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x00000344
+#define AOFF_task_link_count 0x00000364
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x00000348
+#define AOFF_task_tty 0x00000368
#define ASIZ_task_tty 0x00000008
-#define AOFF_task_semundo 0x00000350
+#define AOFF_task_semundo 0x00000370
#define ASIZ_task_semundo 0x00000008
-#define AOFF_task_semsleeping 0x00000358
+#define AOFF_task_semsleeping 0x00000378
#define ASIZ_task_semsleeping 0x00000008
-#define AOFF_task_tss 0x00000360
+#define AOFF_task_tss 0x00000380
#define ASIZ_task_tss 0x00000470
-#define AOFF_task_fs 0x000007d0
+#define AOFF_task_fs 0x000007f0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x000007d8
+#define AOFF_task_files 0x000007f8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x000007e0
+#define AOFF_task_mm 0x00000800
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sigmask_lock 0x000007e8
+#define AOFF_task_sigmask_lock 0x00000808
#define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig 0x000007f0
+#define AOFF_task_sig 0x00000810
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x000007f8
+#define AOFF_task_signal 0x00000818
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000800
+#define AOFF_task_blocked 0x00000820
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x00000808
+#define AOFF_task_sigqueue 0x00000828
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x00000810
+#define AOFF_task_sigqueue_tail 0x00000830
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_sas_ss_sp 0x00000818
+#define AOFF_task_sas_ss_sp 0x00000838
#define ASIZ_task_sas_ss_sp 0x00000008
-#define AOFF_task_sas_ss_size 0x00000820
+#define AOFF_task_sas_ss_size 0x00000840
#define ASIZ_task_sas_ss_size 0x00000008
-#define ASIZ_task 0x00000830
+#define ASIZ_task 0x00000850
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_avl 0x00000008
#define AOFF_mm_map_count 0x00000024
#define ASIZ_mm_map_count 0x00000004
#define AOFF_mm_mmap_sem 0x00000028
-#define ASIZ_mm_mmap_sem 0x00000010
-#define AOFF_mm_context 0x00000038
+#define ASIZ_mm_mmap_sem 0x00000038
+#define AOFF_mm_context 0x00000060
#define ASIZ_mm_context 0x00000008
-#define AOFF_mm_start_code 0x00000040
+#define AOFF_mm_start_code 0x00000068
#define ASIZ_mm_start_code 0x00000008
-#define AOFF_mm_end_code 0x00000048
+#define AOFF_mm_end_code 0x00000070
#define ASIZ_mm_end_code 0x00000008
-#define AOFF_mm_start_data 0x00000050
+#define AOFF_mm_start_data 0x00000078
#define ASIZ_mm_start_data 0x00000008
-#define AOFF_mm_end_data 0x00000058
+#define AOFF_mm_end_data 0x00000080
#define ASIZ_mm_end_data 0x00000008
-#define AOFF_mm_start_brk 0x00000060
+#define AOFF_mm_start_brk 0x00000088
#define ASIZ_mm_start_brk 0x00000008
-#define AOFF_mm_brk 0x00000068
+#define AOFF_mm_brk 0x00000090
#define ASIZ_mm_brk 0x00000008
-#define AOFF_mm_start_stack 0x00000070
+#define AOFF_mm_start_stack 0x00000098
#define ASIZ_mm_start_stack 0x00000008
-#define AOFF_mm_arg_start 0x00000078
+#define AOFF_mm_arg_start 0x000000a0
#define ASIZ_mm_arg_start 0x00000008
-#define AOFF_mm_arg_end 0x00000080
+#define AOFF_mm_arg_end 0x000000a8
#define ASIZ_mm_arg_end 0x00000008
-#define AOFF_mm_env_start 0x00000088
+#define AOFF_mm_env_start 0x000000b0
#define ASIZ_mm_env_start 0x00000008
-#define AOFF_mm_env_end 0x00000090
+#define AOFF_mm_env_end 0x000000b8
#define ASIZ_mm_env_end 0x00000008
-#define AOFF_mm_rss 0x00000098
+#define AOFF_mm_rss 0x000000c0
#define ASIZ_mm_rss 0x00000008
-#define AOFF_mm_total_vm 0x000000a0
+#define AOFF_mm_total_vm 0x000000c8
#define ASIZ_mm_total_vm 0x00000008
-#define AOFF_mm_locked_vm 0x000000a8
+#define AOFF_mm_locked_vm 0x000000d0
#define ASIZ_mm_locked_vm 0x00000008
-#define AOFF_mm_def_flags 0x000000b0
+#define AOFF_mm_def_flags 0x000000d8
#define ASIZ_mm_def_flags 0x00000008
-#define AOFF_mm_cpu_vm_mask 0x000000b8
+#define AOFF_mm_cpu_vm_mask 0x000000e0
#define ASIZ_mm_cpu_vm_mask 0x00000008
-#define AOFF_mm_swap_cnt 0x000000c0
+#define AOFF_mm_swap_cnt 0x000000e8
#define ASIZ_mm_swap_cnt 0x00000008
-#define AOFF_mm_swap_address 0x000000c8
+#define AOFF_mm_swap_address 0x000000f0
#define ASIZ_mm_swap_address 0x00000008
-#define AOFF_mm_segments 0x000000d0
+#define AOFF_mm_segments 0x000000f8
#define ASIZ_mm_segments 0x00000008
-#define ASIZ_mm 0x000000d8
+#define ASIZ_mm 0x00000100
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
#define AOFF_thread_wstate 0x00000008
#define AOFF_task_tarray_ptr 0x000000e8
#define ASIZ_task_tarray_ptr 0x00000008
#define AOFF_task_wait_chldexit 0x000000f0
-#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_vfork_sem 0x000000f8
+#define ASIZ_task_wait_chldexit 0x00000028
+#define AOFF_task_vfork_sem 0x00000118
#define ASIZ_task_vfork_sem 0x00000008
-#define AOFF_task_policy 0x00000100
+#define AOFF_task_policy 0x00000120
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x00000108
+#define AOFF_task_rt_priority 0x00000128
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x00000110
+#define AOFF_task_it_real_value 0x00000130
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x00000118
+#define AOFF_task_it_prof_value 0x00000138
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x00000120
+#define AOFF_task_it_virt_value 0x00000140
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x00000128
+#define AOFF_task_it_real_incr 0x00000148
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000130
+#define AOFF_task_it_prof_incr 0x00000150
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000138
+#define AOFF_task_it_virt_incr 0x00000158
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000140
+#define AOFF_task_real_timer 0x00000160
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000168
+#define AOFF_task_times 0x00000188
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000188
+#define AOFF_task_start_time 0x000001a8
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000190
+#define AOFF_task_per_cpu_utime 0x000001b0
#define ASIZ_task_per_cpu_utime 0x00000100
-#define AOFF_task_min_flt 0x00000390
+#define AOFF_task_min_flt 0x000003b0
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x00000398
+#define AOFF_task_maj_flt 0x000003b8
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x000003a0
+#define AOFF_task_nswap 0x000003c0
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x000003a8
+#define AOFF_task_cmin_flt 0x000003c8
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x000003b0
+#define AOFF_task_cmaj_flt 0x000003d0
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x000003b8
+#define AOFF_task_cnswap 0x000003d8
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_uid 0x000003c4
+#define AOFF_task_uid 0x000003e4
#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000003c8
+#define AOFF_task_euid 0x000003e8
#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000003cc
+#define AOFF_task_suid 0x000003ec
#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000003d0
+#define AOFF_task_fsuid 0x000003f0
#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x000003d4
+#define AOFF_task_gid 0x000003f4
#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x000003d8
+#define AOFF_task_egid 0x000003f8
#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000003dc
+#define AOFF_task_sgid 0x000003fc
#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x000003e0
+#define AOFF_task_fsgid 0x00000400
#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_ngroups 0x000003e4
+#define AOFF_task_ngroups 0x00000404
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x000003e8
+#define AOFF_task_groups 0x00000408
#define ASIZ_task_groups 0x00000080
-#define AOFF_task_cap_effective 0x00000468
+#define AOFF_task_cap_effective 0x00000488
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x0000046c
+#define AOFF_task_cap_inheritable 0x0000048c
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x00000470
+#define AOFF_task_cap_permitted 0x00000490
#define ASIZ_task_cap_permitted 0x00000004
-#define AOFF_task_user 0x00000478
+#define AOFF_task_user 0x00000498
#define ASIZ_task_user 0x00000008
-#define AOFF_task_rlim 0x00000480
+#define AOFF_task_rlim 0x000004a0
#define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math 0x00000520
+#define AOFF_task_used_math 0x00000540
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_comm 0x00000522
+#define AOFF_task_comm 0x00000542
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x00000534
+#define AOFF_task_link_count 0x00000554
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x00000538
+#define AOFF_task_tty 0x00000558
#define ASIZ_task_tty 0x00000008
-#define AOFF_task_semundo 0x00000540
+#define AOFF_task_semundo 0x00000560
#define ASIZ_task_semundo 0x00000008
-#define AOFF_task_semsleeping 0x00000548
+#define AOFF_task_semsleeping 0x00000568
#define ASIZ_task_semsleeping 0x00000008
-#define AOFF_task_tss 0x00000550
+#define AOFF_task_tss 0x00000570
#define ASIZ_task_tss 0x00000470
-#define AOFF_task_fs 0x000009c0
+#define AOFF_task_fs 0x000009e0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x000009c8
+#define AOFF_task_files 0x000009e8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x000009d0
+#define AOFF_task_mm 0x000009f0
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sigmask_lock 0x000009d8
+#define AOFF_task_sigmask_lock 0x000009f8
#define ASIZ_task_sigmask_lock 0x00000001
-#define AOFF_task_sig 0x000009e0
+#define AOFF_task_sig 0x00000a00
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x000009e8
+#define AOFF_task_signal 0x00000a08
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x000009f0
+#define AOFF_task_blocked 0x00000a10
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x000009f8
+#define AOFF_task_sigqueue 0x00000a18
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x00000a00
+#define AOFF_task_sigqueue_tail 0x00000a20
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_sas_ss_sp 0x00000a08
+#define AOFF_task_sas_ss_sp 0x00000a28
#define ASIZ_task_sas_ss_sp 0x00000008
-#define AOFF_task_sas_ss_size 0x00000a10
+#define AOFF_task_sas_ss_size 0x00000a30
#define ASIZ_task_sas_ss_size 0x00000008
-#define ASIZ_task 0x00000a20
+#define ASIZ_task 0x00000a40
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_avl 0x00000008
#define AOFF_mm_map_count 0x00000024
#define ASIZ_mm_map_count 0x00000004
#define AOFF_mm_mmap_sem 0x00000028
-#define ASIZ_mm_mmap_sem 0x00000010
-#define AOFF_mm_context 0x00000038
+#define ASIZ_mm_mmap_sem 0x00000038
+#define AOFF_mm_context 0x00000060
#define ASIZ_mm_context 0x00000008
-#define AOFF_mm_start_code 0x00000040
+#define AOFF_mm_start_code 0x00000068
#define ASIZ_mm_start_code 0x00000008
-#define AOFF_mm_end_code 0x00000048
+#define AOFF_mm_end_code 0x00000070
#define ASIZ_mm_end_code 0x00000008
-#define AOFF_mm_start_data 0x00000050
+#define AOFF_mm_start_data 0x00000078
#define ASIZ_mm_start_data 0x00000008
-#define AOFF_mm_end_data 0x00000058
+#define AOFF_mm_end_data 0x00000080
#define ASIZ_mm_end_data 0x00000008
-#define AOFF_mm_start_brk 0x00000060
+#define AOFF_mm_start_brk 0x00000088
#define ASIZ_mm_start_brk 0x00000008
-#define AOFF_mm_brk 0x00000068
+#define AOFF_mm_brk 0x00000090
#define ASIZ_mm_brk 0x00000008
-#define AOFF_mm_start_stack 0x00000070
+#define AOFF_mm_start_stack 0x00000098
#define ASIZ_mm_start_stack 0x00000008
-#define AOFF_mm_arg_start 0x00000078
+#define AOFF_mm_arg_start 0x000000a0
#define ASIZ_mm_arg_start 0x00000008
-#define AOFF_mm_arg_end 0x00000080
+#define AOFF_mm_arg_end 0x000000a8
#define ASIZ_mm_arg_end 0x00000008
-#define AOFF_mm_env_start 0x00000088
+#define AOFF_mm_env_start 0x000000b0
#define ASIZ_mm_env_start 0x00000008
-#define AOFF_mm_env_end 0x00000090
+#define AOFF_mm_env_end 0x000000b8
#define ASIZ_mm_env_end 0x00000008
-#define AOFF_mm_rss 0x00000098
+#define AOFF_mm_rss 0x000000c0
#define ASIZ_mm_rss 0x00000008
-#define AOFF_mm_total_vm 0x000000a0
+#define AOFF_mm_total_vm 0x000000c8
#define ASIZ_mm_total_vm 0x00000008
-#define AOFF_mm_locked_vm 0x000000a8
+#define AOFF_mm_locked_vm 0x000000d0
#define ASIZ_mm_locked_vm 0x00000008
-#define AOFF_mm_def_flags 0x000000b0
+#define AOFF_mm_def_flags 0x000000d8
#define ASIZ_mm_def_flags 0x00000008
-#define AOFF_mm_cpu_vm_mask 0x000000b8
+#define AOFF_mm_cpu_vm_mask 0x000000e0
#define ASIZ_mm_cpu_vm_mask 0x00000008
-#define AOFF_mm_swap_cnt 0x000000c0
+#define AOFF_mm_swap_cnt 0x000000e8
#define ASIZ_mm_swap_cnt 0x00000008
-#define AOFF_mm_swap_address 0x000000c8
+#define AOFF_mm_swap_address 0x000000f0
#define ASIZ_mm_swap_address 0x00000008
-#define AOFF_mm_segments 0x000000d0
+#define AOFF_mm_segments 0x000000f8
#define ASIZ_mm_segments 0x00000008
-#define ASIZ_mm 0x000000d8
+#define ASIZ_mm 0x00000100
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
#define AOFF_thread_wstate 0x00000008
#define AOFF_task_tarray_ptr 0x000000e8
#define ASIZ_task_tarray_ptr 0x00000008
#define AOFF_task_wait_chldexit 0x000000f0
-#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_vfork_sem 0x000000f8
+#define ASIZ_task_wait_chldexit 0x00000030
+#define AOFF_task_vfork_sem 0x00000120
#define ASIZ_task_vfork_sem 0x00000008
-#define AOFF_task_policy 0x00000100
+#define AOFF_task_policy 0x00000128
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x00000108
+#define AOFF_task_rt_priority 0x00000130
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x00000110
+#define AOFF_task_it_real_value 0x00000138
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x00000118
+#define AOFF_task_it_prof_value 0x00000140
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x00000120
+#define AOFF_task_it_virt_value 0x00000148
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x00000128
+#define AOFF_task_it_real_incr 0x00000150
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x00000130
+#define AOFF_task_it_prof_incr 0x00000158
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000138
+#define AOFF_task_it_virt_incr 0x00000160
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000140
+#define AOFF_task_real_timer 0x00000168
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000168
+#define AOFF_task_times 0x00000190
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000188
+#define AOFF_task_start_time 0x000001b0
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000190
+#define AOFF_task_per_cpu_utime 0x000001b8
#define ASIZ_task_per_cpu_utime 0x00000100
-#define AOFF_task_min_flt 0x00000390
+#define AOFF_task_min_flt 0x000003b8
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x00000398
+#define AOFF_task_maj_flt 0x000003c0
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x000003a0
+#define AOFF_task_nswap 0x000003c8
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x000003a8
+#define AOFF_task_cmin_flt 0x000003d0
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x000003b0
+#define AOFF_task_cmaj_flt 0x000003d8
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x000003b8
+#define AOFF_task_cnswap 0x000003e0
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_uid 0x000003c4
+#define AOFF_task_uid 0x000003ec
#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000003c8
+#define AOFF_task_euid 0x000003f0
#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000003cc
+#define AOFF_task_suid 0x000003f4
#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000003d0
+#define AOFF_task_fsuid 0x000003f8
#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x000003d4
+#define AOFF_task_gid 0x000003fc
#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x000003d8
+#define AOFF_task_egid 0x00000400
#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000003dc
+#define AOFF_task_sgid 0x00000404
#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x000003e0
+#define AOFF_task_fsgid 0x00000408
#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_ngroups 0x000003e4
+#define AOFF_task_ngroups 0x0000040c
#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x000003e8
+#define AOFF_task_groups 0x00000410
#define ASIZ_task_groups 0x00000080
-#define AOFF_task_cap_effective 0x00000468
+#define AOFF_task_cap_effective 0x00000490
#define ASIZ_task_cap_effective 0x00000004
-#define AOFF_task_cap_inheritable 0x0000046c
+#define AOFF_task_cap_inheritable 0x00000494
#define ASIZ_task_cap_inheritable 0x00000004
-#define AOFF_task_cap_permitted 0x00000470
+#define AOFF_task_cap_permitted 0x00000498
#define ASIZ_task_cap_permitted 0x00000004
-#define AOFF_task_user 0x00000478
+#define AOFF_task_user 0x000004a0
#define ASIZ_task_user 0x00000008
-#define AOFF_task_rlim 0x00000480
+#define AOFF_task_rlim 0x000004a8
#define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math 0x00000520
+#define AOFF_task_used_math 0x00000548
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_comm 0x00000522
+#define AOFF_task_comm 0x0000054a
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x00000534
+#define AOFF_task_link_count 0x0000055c
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x00000538
+#define AOFF_task_tty 0x00000560
#define ASIZ_task_tty 0x00000008
-#define AOFF_task_semundo 0x00000540
+#define AOFF_task_semundo 0x00000568
#define ASIZ_task_semundo 0x00000008
-#define AOFF_task_semsleeping 0x00000548
+#define AOFF_task_semsleeping 0x00000570
#define ASIZ_task_semsleeping 0x00000008
-#define AOFF_task_tss 0x00000550
+#define AOFF_task_tss 0x00000580
#define ASIZ_task_tss 0x00000470
-#define AOFF_task_fs 0x000009c0
+#define AOFF_task_fs 0x000009f0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x000009c8
+#define AOFF_task_files 0x000009f8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x000009d0
+#define AOFF_task_mm 0x00000a00
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sigmask_lock 0x000009d8
+#define AOFF_task_sigmask_lock 0x00000a08
#define ASIZ_task_sigmask_lock 0x0000000c
-#define AOFF_task_sig 0x000009e8
+#define AOFF_task_sig 0x00000a18
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x000009f0
+#define AOFF_task_signal 0x00000a20
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x000009f8
+#define AOFF_task_blocked 0x00000a28
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x00000a00
+#define AOFF_task_sigqueue 0x00000a30
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x00000a08
+#define AOFF_task_sigqueue_tail 0x00000a38
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_sas_ss_sp 0x00000a10
+#define AOFF_task_sas_ss_sp 0x00000a40
#define ASIZ_task_sas_ss_sp 0x00000008
-#define AOFF_task_sas_ss_size 0x00000a18
+#define AOFF_task_sas_ss_size 0x00000a48
#define ASIZ_task_sas_ss_size 0x00000008
-#define ASIZ_task 0x00000a20
+#define ASIZ_task 0x00000a50
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_avl 0x00000008
#define AOFF_mm_map_count 0x00000024
#define ASIZ_mm_map_count 0x00000004
#define AOFF_mm_mmap_sem 0x00000028
-#define ASIZ_mm_mmap_sem 0x00000010
-#define AOFF_mm_context 0x00000038
+#define ASIZ_mm_mmap_sem 0x00000040
+#define AOFF_mm_context 0x00000068
#define ASIZ_mm_context 0x00000008
-#define AOFF_mm_start_code 0x00000040
+#define AOFF_mm_start_code 0x00000070
#define ASIZ_mm_start_code 0x00000008
-#define AOFF_mm_end_code 0x00000048
+#define AOFF_mm_end_code 0x00000078
#define ASIZ_mm_end_code 0x00000008
-#define AOFF_mm_start_data 0x00000050
+#define AOFF_mm_start_data 0x00000080
#define ASIZ_mm_start_data 0x00000008
-#define AOFF_mm_end_data 0x00000058
+#define AOFF_mm_end_data 0x00000088
#define ASIZ_mm_end_data 0x00000008
-#define AOFF_mm_start_brk 0x00000060
+#define AOFF_mm_start_brk 0x00000090
#define ASIZ_mm_start_brk 0x00000008
-#define AOFF_mm_brk 0x00000068
+#define AOFF_mm_brk 0x00000098
#define ASIZ_mm_brk 0x00000008
-#define AOFF_mm_start_stack 0x00000070
+#define AOFF_mm_start_stack 0x000000a0
#define ASIZ_mm_start_stack 0x00000008
-#define AOFF_mm_arg_start 0x00000078
+#define AOFF_mm_arg_start 0x000000a8
#define ASIZ_mm_arg_start 0x00000008
-#define AOFF_mm_arg_end 0x00000080
+#define AOFF_mm_arg_end 0x000000b0
#define ASIZ_mm_arg_end 0x00000008
-#define AOFF_mm_env_start 0x00000088
+#define AOFF_mm_env_start 0x000000b8
#define ASIZ_mm_env_start 0x00000008
-#define AOFF_mm_env_end 0x00000090
+#define AOFF_mm_env_end 0x000000c0
#define ASIZ_mm_env_end 0x00000008
-#define AOFF_mm_rss 0x00000098
+#define AOFF_mm_rss 0x000000c8
#define ASIZ_mm_rss 0x00000008
-#define AOFF_mm_total_vm 0x000000a0
+#define AOFF_mm_total_vm 0x000000d0
#define ASIZ_mm_total_vm 0x00000008
-#define AOFF_mm_locked_vm 0x000000a8
+#define AOFF_mm_locked_vm 0x000000d8
#define ASIZ_mm_locked_vm 0x00000008
-#define AOFF_mm_def_flags 0x000000b0
+#define AOFF_mm_def_flags 0x000000e0
#define ASIZ_mm_def_flags 0x00000008
-#define AOFF_mm_cpu_vm_mask 0x000000b8
+#define AOFF_mm_cpu_vm_mask 0x000000e8
#define ASIZ_mm_cpu_vm_mask 0x00000008
-#define AOFF_mm_swap_cnt 0x000000c0
+#define AOFF_mm_swap_cnt 0x000000f0
#define ASIZ_mm_swap_cnt 0x00000008
-#define AOFF_mm_swap_address 0x000000c8
+#define AOFF_mm_swap_address 0x000000f8
#define ASIZ_mm_swap_address 0x00000008
-#define AOFF_mm_segments 0x000000d0
+#define AOFF_mm_segments 0x00000100
#define ASIZ_mm_segments 0x00000008
-#define ASIZ_mm 0x000000d8
+#define ASIZ_mm 0x00000108
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
#define AOFF_thread_wstate 0x00000008
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;
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. */
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;
-/* $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)
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;
};
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
{
int ret = 0;
+#if WAITQUEUE_DEBUG
+ CHECK_MAGIC(sem->__magic);
+#endif
__asm__ __volatile__("
1: lduw [%2], %%g5
sub %%g5, 1, %%g7
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
extern __inline__ void up(struct semaphore * sem)
{
+#if WAITQUEUE_DEBUG
+ CHECK_MAGIC(sem->__magic);
+#endif
__asm__ __volatile__("
membar #StoreLoad | #LoadLoad
1: lduw [%0], %%g5
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) \
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);
/* 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;
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;
};
__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 */
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 */
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;
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;
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 */
};
/*
*/
int nr_free_sh;
struct stripe_head *free_sh_list;
- struct wait_queue *wait_for_stripe;
+ wait_queue_head_t wait_for_stripe;
};
#endif
struct smb_conn_opt opt;
struct semaphore sem;
- struct wait_queue * wait;
+ wait_queue_head_t wait;
__u32 packet_size;
unsigned char * packet;
*(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)
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;
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)
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
}
#endif
q->task = p;
#if WAITQUEUE_DEBUG
- q->__magic = (int)&q->__magic;
+ q->__magic = (long)&q->__magic;
#endif
}
goto out;
}
#if WAITQUEUE_DEBUG
- curr->__waker = (int)__builtin_return_address(0);
+ curr->__waker = (long)__builtin_return_address(0);
#endif
wake_up_process(p);
}
#include <linux/interrupt.h>
#include <asm/semaphore.h>
-struct semaphore firewall_sem = MUTEX;
+DECLARE_MUTEX(firewall_sem);
static int firewall_policy[NPROTO];
static struct firewall_ops *firewall_chain[NPROTO];
* handler for protocols to use and generic option handler.
*
*
- * Version: $Id: sock.c,v 1.80 1999/05/08 03:04:34 davem Exp $
+ * Version: $Id: sock.c,v 1.81 1999/05/12 11:24:19 davem Exp $
*
* Authors: Ross Biro, <bir7@leland.Stanford.Edu>
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
*
* PF_INET protocol family socket handler.
*
- * Version: $Id: af_inet.c,v 1.87 1999/04/22 10:07:33 davem Exp $
+ * Version: $Id: af_inet.c,v 1.88 1999/05/12 11:24:27 davem Exp $
*
* Authors: Ross Biro, <bir7@leland.Stanford.Edu>
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
*
* Alan Cox, <alan@cymru.net>
*
- * Version: $Id: icmp.c,v 1.52 1999/03/21 12:04:11 davem Exp $
+ * Version: $Id: icmp.c,v 1.53 1999/05/12 11:24:32 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
};
-static struct semaphore mfw_sema = MUTEX;
+static DECLARE_MUTEX(mfw_sema);
#ifdef __SMP__
static rwlock_t mfw_lock = RW_LOCK_UNLOCKED;
#endif
*
* Implementation of the Transmission Control Protocol(TCP).
*
- * Version: $Id: tcp.c,v 1.140 1999/04/22 10:34:31 davem Exp $
+ * Version: $Id: tcp.c,v 1.141 1999/05/12 11:24:40 davem Exp $
*
* Authors: Ross Biro, <bir7@leland.Stanford.Edu>
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
*
* 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
*
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) {
* 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.