diff options
Diffstat (limited to 'include/linux')
69 files changed, 1111 insertions, 233 deletions
diff --git a/include/linux/adfs_fs.h b/include/linux/adfs_fs.h index fe4e79e4b..f6ed2d3b1 100644 --- a/include/linux/adfs_fs.h +++ b/include/linux/adfs_fs.h @@ -155,7 +155,7 @@ extern void adfs_read_inode (struct inode *inode); extern int adfs_map_lookup (struct super_block *sb, int frag_id, int offset); /* namei.c */ -extern int adfs_lookup (struct inode *dir, struct dentry *dentry); +extern struct dentry *adfs_lookup (struct inode *dir, struct dentry *dentry); /* super.c */ extern int init_adfs_fs (void); diff --git a/include/linux/adfs_fs_sb.h b/include/linux/adfs_fs_sb.h index 527c29fb6..649b61e45 100644 --- a/include/linux/adfs_fs_sb.h +++ b/include/linux/adfs_fs_sb.h @@ -15,6 +15,10 @@ struct adfs_sb_info { struct buffer_head *s_sbh; /* buffer head containing disc record */ struct adfs_discrecord *s_dr; /* pointer to disc record in s_sbh */ + uid_t s_uid; /* owner uid */ + gid_t s_gid; /* owner gid */ + int s_owner_mask; /* ADFS Owner perm -> unix perm */ + int s_other_mask; /* ADFS Other perm -> unix perm */ __u16 s_zone_size; /* size of a map zone in bits */ __u16 s_ids_per_zone; /* max. no ids in one zone */ __u32 s_idlen; /* length of ID in map */ diff --git a/include/linux/affs_fs.h b/include/linux/affs_fs.h index 6361a82a1..342ac2648 100644 --- a/include/linux/affs_fs.h +++ b/include/linux/affs_fs.h @@ -60,7 +60,7 @@ extern void affs_make_zones(struct super_block *sb); /* namei.c */ extern int affs_hash_name(const unsigned char *name, int len, int intl, int hashsize); -extern int affs_lookup(struct inode *dir, struct dentry *dentry); +extern struct dentry *affs_lookup(struct inode *dir, struct dentry *dentry); extern int affs_unlink(struct inode *dir, struct dentry *dentry); extern int affs_create(struct inode *dir, struct dentry *dentry, int mode); extern int affs_mkdir(struct inode *dir, struct dentry *dentry, int mode); diff --git a/include/linux/awe_voice.h b/include/linux/awe_voice.h index 95fc207da..aed60f5c2 100644 --- a/include/linux/awe_voice.h +++ b/include/linux/awe_voice.h @@ -3,9 +3,9 @@ * * Voice information definitions for the low level driver for the * AWE32/SB32/AWE64 wave table synth. - * version 0.4.3; Mar. 1, 1998 + * version 0.4.3; Feb. 1, 1999 * - * Copyright (C) 1996-1998 Takashi Iwai + * Copyright (C) 1996-1999 Takashi Iwai * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -133,7 +133,7 @@ typedef struct _awe_voice_parm_block { unsigned short moddelay; /* modulation delay (0x8000) */ unsigned char modatk, modhld; unsigned char moddcy, modsus; - unsigned short modrel, moddummy; + unsigned char modrel, moddummy; short modkeyhold, modkeydecay; /* envelope change per key (not used) */ unsigned short voldelay; /* volume delay (0x8000) */ unsigned char volatk, volhld; diff --git a/include/linux/capability.h b/include/linux/capability.h index 07248ac5d..f6fb2c9c3 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h @@ -193,7 +193,6 @@ typedef __u32 kernel_cap_t; /* Allow device administration (mknod)*/ /* Allow examination and configuration of disk quotas */ /* Allow configuring the kernel's syslog (printk behaviour) */ -/* Allow sending a signal to any process */ /* Allow setting the domainname */ /* Allow setting the hostname */ /* Allow calling bdflush() */ diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h index c63d79037..a8c028fb3 100644 --- a/include/linux/cdrom.h +++ b/include/linux/cdrom.h @@ -112,6 +112,9 @@ #define CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */ #define CDROM_DISC_STATUS 0x5327 /* Get disc type, etc. */ #define CDROM_CHANGER_NSLOTS 0x5328 /* Get number of slots */ +#define CDROM_LOCKDOOR 0x5329 /* lock or unlock door */ +#define CDROM_DEBUG 0x5330 /* Turn debug messages on/off */ +#define CDROM_GET_CAPABILITY 0x5331 /* get capabilities */ /* This ioctl is only used by sbpcd at the moment */ #define CDROMAUDIOBUFSIZ 0x5382 /* set the audio buffer size */ @@ -340,14 +343,15 @@ struct cdrom_blk #define CDC_IOCTLS 0x400 /* driver has non-standard ioctls */ #define CDC_DRIVE_STATUS 0x800 /* driver implements drive status */ -/* drive status possibilities used with the uniform CD-ROM driver */ -#define CDS_NO_INFO 0 /* if not implemented */ +/* drive status possibilities returned by CDROM_DRIVE_STATUS ioctl */ +#define CDS_NO_INFO 0 /* if not implemented */ #define CDS_NO_DISC 1 #define CDS_TRAY_OPEN 2 #define CDS_DRIVE_NOT_READY 3 #define CDS_DISC_OK 4 -/* disc status possibilities, other than CDS_NO_DISC and CDS_NO_INFO */ +/* return values for the CDROM_DISC_STATUS ioctl */ +/* can also return CDS_NO_[INFO|DISC], from above */ #define CDS_AUDIO 100 #define CDS_DATA_1 101 #define CDS_DATA_2 102 diff --git a/include/linux/console.h b/include/linux/console.h index 35bc9984b..6df950101 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -42,6 +42,8 @@ struct consw { void (*con_save_screen)(struct vc_data *); u8 (*con_build_attr)(struct vc_data *, u8, u8, u8, u8, u8); void (*con_invert_region)(struct vc_data *, u16 *, int); + u16 *(*con_screen_pos)(struct vc_data *, int); + unsigned long (*con_getxy)(struct vc_data *, unsigned long, int *, int *); }; extern struct consw *conswitchp; diff --git a/include/linux/cyclades.h b/include/linux/cyclades.h index 6e67b5414..0f373ff5b 100644 --- a/include/linux/cyclades.h +++ b/include/linux/cyclades.h @@ -316,6 +316,7 @@ struct FIRM_ID { #define C_IN_OVR_ERROR 0x00008000 /* overrun error */ #define C_IN_RXOFL 0x00010000 /* RX buffer overflow */ #define C_IN_IOCTLW 0x00020000 /* I/O control w/ wait */ +#define C_IN_MRTS 0x00040000 /* modem RTS drop */ /* flow control */ @@ -332,12 +333,14 @@ struct FIRM_ID { /* rs_control/rs_status RS-232 signals */ +#define C_RS_PARAM 0x80000000 /* Indicates presence of parameter in + IOCTLM command */ +#define C_RS_RTS 0x00000001 /* RTS */ +#define C_RS_DTR 0x00000004 /* DTR */ #define C_RS_DCD 0x00000100 /* CD */ #define C_RS_DSR 0x00000200 /* DSR */ #define C_RS_RI 0x00000400 /* RI */ #define C_RS_CTS 0x00000800 /* CTS */ -#define C_RS_RTS 0x00000001 /* RTS */ -#define C_RS_DTR 0x00000004 /* DTR */ /* commands Host <-> Board */ @@ -353,13 +356,18 @@ struct FIRM_ID { #define C_CM_SET_BREAK 0x43 /* Tx break on */ #define C_CM_CLR_BREAK 0x44 /* Tx break off */ #define C_CM_CMD_DONE 0x45 /* Previous command done */ +#define C_CM_INTBACK2 0x46 /* Alternate Interrupt back */ #define C_CM_TINACT 0x51 /* set inactivity detection */ #define C_CM_IRQ_ENBL 0x52 /* enable generation of interrupts */ #define C_CM_IRQ_DSBL 0x53 /* disable generation of interrupts */ -#define C_CM_ACK_ENBL 0x54 /* enable acknolowdged interrupt mode */ -#define C_CM_ACK_DSBL 0x55 /* disable acknolowdged intr mode */ +#define C_CM_ACK_ENBL 0x54 /* enable acknowledged interrupt mode */ +#define C_CM_ACK_DSBL 0x55 /* disable acknowledged intr mode */ #define C_CM_FLUSH_RX 0x56 /* flushes Rx buffer */ #define C_CM_FLUSH_TX 0x57 /* flushes Tx buffer */ +#define C_CM_Q_ENABLE 0x58 /* enables queue access from the + driver */ +#define C_CM_Q_DISABLE 0x59 /* disables queue access from the + driver */ #define C_CM_TXBEMPTY 0x60 /* Tx buffer is empty */ #define C_CM_TXLOWWM 0x61 /* Tx buffer low water mark */ @@ -369,6 +377,7 @@ struct FIRM_ID { #define C_CM_MDSR 0x71 /* modem DSR change */ #define C_CM_MRI 0x72 /* modem RI change */ #define C_CM_MCTS 0x73 /* modem CTS change */ +#define C_CM_MRTS 0x74 /* modem RTS drop */ #define C_CM_RXBRK 0x84 /* Break received */ #define C_CM_PR_ERROR 0x85 /* Parity error */ #define C_CM_FR_ERROR 0x86 /* Frame error */ @@ -449,9 +458,22 @@ struct BOARD_CTRL { /* FW to Host commands */ uclong fwcmd_channel; /* channel number */ uclong fwcmd_param; /* pointer to parameters */ + uclong zf_int_queue_addr; /* offset for INT_QUEUE structure */ /* filler so the structures are aligned */ - uclong filler[7]; + uclong filler[6]; +}; + +/* Host Interrupt Queue */ + +#define QUEUE_SIZE (10*MAX_CHAN) + +struct INT_QUEUE { + unsigned char intr_code[QUEUE_SIZE]; + unsigned long channel[QUEUE_SIZE]; + unsigned long param[QUEUE_SIZE]; + unsigned long put; + unsigned long get; }; /* @@ -586,6 +608,8 @@ struct cyclades_port { #define CyPCI_Zwin 0x80000 #define CyPCI_Ze_win (2 * CyPCI_Zwin) +#define PCI_DEVICE_ID_MASK 0x06 + /**** CD1400 registers ****/ #define CD1400_REV_G 0x46 diff --git a/include/linux/dcache.h b/include/linux/dcache.h index ecf38fd06..84e1376b3 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -6,7 +6,10 @@ /* * linux/include/linux/dcache.h * - * Directory cache data structures + * Dirent cache data structures + * + * (C) Copyright 1997 Thomas Schoebel-Theuer, + * with heavy changes by Linus Torvalds */ #define D_MAXLEN 1024 @@ -74,7 +77,7 @@ struct dentry { }; struct dentry_operations { - int (*d_revalidate)(struct dentry *); + int (*d_revalidate)(struct dentry *, int); int (*d_hash) (struct dentry *, struct qstr *); int (*d_compare) (struct dentry *, struct qstr *, struct qstr *); void (*d_delete)(struct dentry *); diff --git a/include/linux/dtlk.h b/include/linux/dtlk.h new file mode 100644 index 000000000..07a6b82bc --- /dev/null +++ b/include/linux/dtlk.h @@ -0,0 +1,104 @@ +#if 0 + +#define TRACE_TXT(text) \ + { \ + if(dtlk_trace) \ + { \ + console_print(text); \ + console_print("\n"); \ + } \ + } + +#define TRACE_CHR(chr) \ + { \ + if(dtlk_trace) \ + console_print(chr); \ + } \ + +#endif + +#define DTLK_MINOR 0 +#define DTLK_IO_EXTENT 0x02 + + /* ioctl's use magic number of 0xa3 */ +#define DTLK_INTERROGATE 0xa390 /* get settings from the DoubleTalk */ +#define DTLK_STATUS 0xa391 /* get status from the DoubleTalk */ + + +#define DTLK_CLEAR 0x18 /* stops speech */ + +#define DTLK_MAX_RETRIES (loops_per_sec/10000) + + /* TTS Port Status Flags */ +#define TTS_READABLE 0x80 /* mask for bit which is nonzero if a + byte can be read from the TTS port */ +#define TTS_SPEAKING 0x40 /* mask for SYNC bit, which is nonzero + while DoubleTalk is producing + output with TTS, PCM or CVSD + synthesizers or tone generators + (that is, all but LPC) */ +#define TTS_SPEAKING2 0x20 /* mask for SYNC2 bit, + which falls to zero up to 0.4 sec + before speech stops */ +#define TTS_WRITABLE 0x10 /* mask for RDY bit, which when set to + 1, indicates the TTS port is ready + to accept a byte of data. The RDY + bit goes zero 2-3 usec after + writing, and goes 1 again 180-190 + usec later. */ +#define TTS_ALMOST_FULL 0x08 /* mask for AF bit: When set to 1, + indicates that less than 300 free + bytes are available in the TTS + input buffer. AF is always 0 in the + PCM, TGN and CVSD modes. */ +#define TTS_ALMOST_EMPTY 0x04 /* mask for AE bit: When set to 1, + indicates that less than 300 bytes + of data remain in DoubleTalk's + input (TTS or PCM) buffer. AE is + always 1 in the TGN and CVSD + modes. */ + + /* LPC speak commands */ +#define LPC_5220_NORMAL 0x60 /* 5220 format decoding table, normal rate */ +#define LPC_5220_FAST 0x64 /* 5220 format decoding table, fast rate */ +#define LPC_D6_NORMAL 0x20 /* D6 format decoding table, normal rate */ +#define LPC_D6_FAST 0x24 /* D6 format decoding table, fast rate */ + + /* LPC Port Status Flags (valid only after one of the LPC + speak commands) */ +#define LPC_SPEAKING 0x80 /* mask for TS bit: When set to 1, + indicates the LPC synthesizer is + producing speech.*/ +#define LPC_BUFFER_LOW 0x40 /* mask for BL bit: When set to 1, + indicates that the hardware LPC + data buffer has less than 30 bytes + remaining. (Total internal buffer + size = 4096 bytes.) */ +#define LPC_BUFFER_EMPTY 0x20 /* mask for BE bit: When set to 1, + indicates that the LPC data buffer + ran out of data (error condition if + TS is also 1). */ + + /* data returned by Interrogate command */ +struct dtlk_settings +{ + unsigned short serial_number; /* 0-7Fh:0-7Fh */ + unsigned char rom_version[24]; /* null terminated string */ + unsigned char mode; /* 0=Character; 1=Phoneme; 2=Text */ + unsigned char punc_level; /* nB; 0-7 */ + unsigned char formant_freq; /* nF; 0-9 */ + unsigned char pitch; /* nP; 0-99 */ + unsigned char speed; /* nS; 0-9 */ + unsigned char volume; /* nV; 0-9 */ + unsigned char tone; /* nX; 0-2 */ + unsigned char expression; /* nE; 0-9 */ + unsigned char ext_dict_loaded; /* 1=exception dictionary loaded */ + unsigned char ext_dict_status; /* 1=exception dictionary enabled */ + unsigned char free_ram; /* # pages (truncated) remaining for + text buffer */ + unsigned char articulation; /* nA; 0-9 */ + unsigned char reverb; /* nR; 0-9 */ + unsigned char eob; /* 7Fh value indicating end of + parameter block */ + unsigned char has_indexing; /* nonzero if indexing is implemented */ +}; diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h index 96b1d1955..b1352dc02 100644 --- a/include/linux/ext2_fs.h +++ b/include/linux/ext2_fs.h @@ -572,7 +572,7 @@ extern int ext2_ioctl (struct inode *, struct file *, unsigned int, /* namei.c */ extern void ext2_release (struct inode *, struct file *); -extern int ext2_lookup (struct inode *, struct dentry *); +extern struct dentry *ext2_lookup (struct inode *, struct dentry *); extern int ext2_create (struct inode *,struct dentry *,int); extern int ext2_mkdir (struct inode *,struct dentry *,int); extern int ext2_rmdir (struct inode *,struct dentry *); diff --git a/include/linux/ext2_fs_sb.h b/include/linux/ext2_fs_sb.h index 9ce758116..207216323 100644 --- a/include/linux/ext2_fs_sb.h +++ b/include/linux/ext2_fs_sb.h @@ -49,8 +49,6 @@ struct ext2_sb_info { struct buffer_head * s_inode_bitmap[EXT2_MAX_GROUP_LOADED]; unsigned long s_block_bitmap_number[EXT2_MAX_GROUP_LOADED]; struct buffer_head * s_block_bitmap[EXT2_MAX_GROUP_LOADED]; - int s_rename_lock; - struct wait_queue * s_rename_wait; unsigned long s_mount_opt; unsigned short s_resuid; unsigned short s_resgid; diff --git a/include/linux/fb.h b/include/linux/fb.h index f4c775db4..f084ca036 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -31,6 +31,7 @@ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ #define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */ #define FB_TYPE_TEXT 3 /* Text/attributes */ +#define FB_TYPE_VGA_PLANES 4 /* EGA/VGA planes */ #define FB_AUX_TEXT_MDA 0 /* Monochrome text */ #define FB_AUX_TEXT_CGA 1 /* CGA/EGA/VGA Color text */ @@ -67,6 +68,10 @@ #define FB_ACCEL_MATROX_MGA2164W_AGP 19 /* Matrox MGA2164W (Millenium II) */ #define FB_ACCEL_MATROX_MGAG100 20 /* Matrox G100 (Productiva G100) */ #define FB_ACCEL_MATROX_MGAG200 21 /* Matrox G200 (Myst, Mill, ...) */ +#define FB_ACCEL_SUN_CG14 22 /* Sun cgfourteen */ +#define FB_ACCEL_SUN_BWTWO 23 /* Sun bwtwo */ +#define FB_ACCEL_SUN_CGTHREE 24 /* Sun cgthree */ +#define FB_ACCEL_SUN_TCX 25 /* Sun tcx */ struct fb_fix_screeninfo { char id[16]; /* identification string eg "TT Builtin" */ @@ -232,6 +237,8 @@ struct fb_ops { unsigned long arg, int con, struct fb_info *info); /* perform fb specific mmap */ int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma); + /* switch to/from raster image mode */ + int (*fb_rasterimg)(struct fb_info *info, int start); }; @@ -291,7 +298,7 @@ struct display { struct fb_info { char modename[40]; /* default video mode */ - int node; + kdev_t node; int flags; #define FBINFO_FLAG_MODULE 1 /* Low-level driver is a module */ struct fb_ops *fbops; @@ -340,8 +347,8 @@ struct fbgen_hwswitch { int (*pan_display)(const struct fb_var_screeninfo *var, struct fb_info_gen *info); int (*blank)(int blank_mode, struct fb_info_gen *info); - void (*set_dispsw)(const void *par, struct display *disp, - struct fb_info_gen *info); + void (*set_disp)(const void *par, struct display *disp, + struct fb_info_gen *info); }; struct fb_info_gen { diff --git a/include/linux/filter.h b/include/linux/filter.h index dcf33554e..58ad8b1bc 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -18,18 +18,32 @@ struct sock_filter /* Filter block */ { - u16 code; /* Actual filter code */ - u8 jt; /* Jump true */ - u8 jf; /* Jump false */ - u32 k; /* Generic multiuse field */ + __u16 code; /* Actual filter code */ + __u8 jt; /* Jump true */ + __u8 jf; /* Jump false */ + __u32 k; /* Generic multiuse field */ }; struct sock_fprog /* Required for SO_ATTACH_FILTER. */ { - unsigned short len; /* Number of filter blocks */ - struct sock_filter *filter; + unsigned short len; /* Number of filter blocks */ + struct sock_filter *filter; }; +#ifdef __KERNEL__ +struct sk_filter +{ + atomic_t refcnt; + unsigned int len; /* Number of filter blocks */ + struct sock_filter insns[0]; +}; + +extern __inline__ unsigned int sk_filter_len(struct sk_filter *fp) +{ + return fp->len*sizeof(struct sock_filter) + sizeof(*fp); +} +#endif + /* * Instruction classes */ @@ -86,21 +100,40 @@ struct sock_fprog /* Required for SO_ATTACH_FILTER. */ #define BPF_TAX 0x00 #define BPF_TXA 0x80 -#define BPF_MAXINSNS 512 +#ifndef BPF_MAXINSNS +#define BPF_MAXINSNS 4096 +#endif /* * Macros for filter block array initializers. */ +#ifndef BPF_STMT #define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k } +#endif +#ifndef BPF_JUMP #define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k } +#endif /* * Number of scratch memory words for: BPF_ST and BPF_STX */ #define BPF_MEMWORDS 16 +/* RATIONALE. Negative offsets are invalid in BPF. + We use them to reference ancillary data. + Unlike introduction new instructions, it does not break + existing compilers/optimizers. + */ +#define SKF_AD_OFF (-0x1000) +#define SKF_AD_PROTOCOL 0 +#define SKF_AD_PKTTYPE 4 +#define SKF_AD_IFINDEX 8 +#define SKF_AD_MAX 12 +#define SKF_NET_OFF (-0x100000) +#define SKF_LL_OFF (-0x200000) + #ifdef __KERNEL__ -extern int sk_run_filter(unsigned char *data, int len, struct sock_filter *filter, int flen); +extern int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen); extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk); #endif /* __KERNEL__ */ diff --git a/include/linux/fs.h b/include/linux/fs.h index ff6e28dc5..e4ea5197f 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -96,6 +96,10 @@ extern int max_super_blocks, nr_super_blocks; #define MS_NOATIME 1024 /* Do not update access times. */ #define MS_NODIRATIME 2048 /* Do not update directory access times */ +#define MS_ODD_RENAME 32768 /* Temporary stuff; will go away as soon + * as nfs_rename() will be cleaned up + */ + /* * Flags that can be altered by MS_REMOUNT */ @@ -150,6 +154,7 @@ extern int max_super_blocks, nr_super_blocks; #define BLKFRAGET _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */ #define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */ #define BLKSECTGET _IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */ +#define BLKSSZGET _IO(0x12,104)/* get block device sector size (reserved for) */ #define BMAP_IOCTL 1 /* obsolete - kept for compatibility */ #define FIBMAP _IO(0x00,1) /* bmap access */ @@ -164,7 +169,7 @@ extern int max_super_blocks, nr_super_blocks; extern void update_atime (struct inode *inode); #define UPDATE_ATIME(inode) update_atime (inode) -extern void buffer_init(void); +extern void buffer_init(unsigned long); extern void inode_init(void); extern void file_table_init(void); extern void dcache_init(void); @@ -249,18 +254,8 @@ static inline int buffer_protected(struct buffer_head * bh) return test_bit(BH_Protected, &bh->b_state); } -/* - * Deprecated - we don't keep per-buffer reference flags - * any more. - * - * We _could_ try to update the page reference, but that - * doesn't seem to really be worth it either. If we did, - * it would look something like this: - * - * #define buffer_page(bh) (mem_map + MAP_NR((bh)->b_data)) - * #define touch_buffer(bh) set_bit(PG_referenced, &buffer_page(bh)->flags) - */ -#define touch_buffer(bh) do { } while (0) +#define buffer_page(bh) (mem_map + MAP_NR((bh)->b_data)) +#define touch_buffer(bh) set_bit(PG_referenced, &buffer_page(bh)->flags) #include <linux/pipe_fs_i.h> #include <linux/minix_fs_i.h> @@ -373,6 +368,7 @@ struct inode { int i_writecount; unsigned int i_attr_flags; + __u32 i_generation; union { struct pipe_inode_info pipe_i; struct minix_inode_info minix_i; @@ -425,6 +421,8 @@ struct file { unsigned int f_count, f_flags; unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin; struct fown_struct f_owner; + unsigned int f_uid, f_gid; + int f_error; unsigned long f_version; @@ -560,6 +558,11 @@ struct super_block { struct qnx4_sb_info qnx4_sb; void *generic_sbp; } u; + /* + * The next field is for VFS *only*. No filesystems have any business + * even looking at it. You had been warned. + */ + struct semaphore s_vfs_rename_sem; /* Kludge */ }; /* @@ -598,7 +601,7 @@ struct file_operations { struct inode_operations { struct file_operations * default_file_ops; int (*create) (struct inode *,struct dentry *,int); - int (*lookup) (struct inode *,struct dentry *); + struct dentry * (*lookup) (struct inode *,struct dentry *); int (*link) (struct dentry *,struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *); int (*symlink) (struct inode *,struct dentry *,const char *); @@ -695,8 +698,9 @@ asmlinkage int sys_close(unsigned int); /* yes, it's really unsigned */ extern int do_truncate(struct dentry *, unsigned long); extern int get_unused_fd(void); extern void put_unused_fd(unsigned int); -extern int close_fp(struct file *, fl_owner_t id); + extern struct file *filp_open(const char *, int, int); +extern int filp_close(struct file *, fl_owner_t id); extern char * getname(const char * filename); #define __getname() ((char *) __get_free_page(GFP_KERNEL)) @@ -810,6 +814,18 @@ extern ino_t find_inode_number(struct dentry *, struct qstr *); #define PTR_ERR(ptr) ((long)(ptr)) #define IS_ERR(ptr) ((unsigned long)(ptr) > (unsigned long)(-1000)) +/* + * The bitmask for a lookup event: + * - follow links at the end + * - require a directory + * - ending slashes ok even for nonexistent files + * - internal "there are more path compnents" flag + */ +#define LOOKUP_FOLLOW (1) +#define LOOKUP_DIRECTORY (2) +#define LOOKUP_SLASHOK (4) +#define LOOKUP_CONTINUE (8) + extern struct dentry * lookup_dentry(const char *, struct dentry *, unsigned int); extern struct dentry * __namei(const char *, unsigned int); diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 20589194f..fdd93a0b4 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -10,6 +10,7 @@ */ #include <linux/config.h> +#include <linux/types.h> #define CONFIG_MSDOS_PARTITION 1 diff --git a/include/linux/hippidevice.h b/include/linux/hippidevice.h index f3b3310e3..e345a9d22 100644 --- a/include/linux/hippidevice.h +++ b/include/linux/hippidevice.h @@ -52,6 +52,7 @@ extern void hippi_net_init(void); void hippi_setup(struct device *dev); extern struct device *init_hippi_dev(struct device *, int); +extern void unregister_hipdev(struct device *dev); #endif #endif /* _LINUX_HIPPIDEVICE_H */ diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h index 30d8b8f0a..39007c8bf 100644 --- a/include/linux/if_arp.h +++ b/include/linux/if_arp.h @@ -66,6 +66,13 @@ #define ARPHRD_ASH 781 /* Nexus 64Mbps Ash */ #define ARPHRD_ECONET 782 /* Acorn Econet */ #define ARPHRD_IRDA 783 /* Linux/IR */ +/* ARP works differently on different FC media .. so */ +#define ARPHRD_FCPP 784 /* Point to point fibrechanel */ +#define ARPHRD_FCAL 785 /* Fibrechannel arbitrated loop */ +#define ARPHRD_FCPL 786 /* Fibrechannel public loop */ +#define ARPHRD_FCFABRIC 787 /* Fibrechannel fabric */ + /* 787->799 reserved for fibrechannel media types */ + /* ARP protocol opcodes. */ #define ARPOP_REQUEST 1 /* ARP request */ diff --git a/include/linux/if_ppp.h b/include/linux/if_ppp.h index bb7a98db3..1d103bdca 100644 --- a/include/linux/if_ppp.h +++ b/include/linux/if_ppp.h @@ -1,4 +1,4 @@ -/* $Id: if_ppp.h,v 1.14 1998/07/07 04:27:33 paulus Exp $ */ +/* $Id: if_ppp.h,v 1.19 1999/03/31 06:07:57 paulus Exp $ */ /* * if_ppp.h - Point-to-Point Protocol definitions. @@ -21,7 +21,7 @@ */ /* - * ==FILEVERSION 980704== + * ==FILEVERSION 990331== * * NOTE TO MAINTAINERS: * If you modify this file at all, please set the above date. @@ -35,19 +35,13 @@ #ifndef _IF_PPP_H_ #define _IF_PPP_H_ -#if defined(__linux__) -#include <linux/if.h> -#include <linux/ioctl.h> -#include <linux/ppp_defs.h> -#endif - /* * Packet sizes */ #define PPP_MTU 1500 /* Default MTU (size of Info field) */ #define PPP_MAXMRU 65000 /* Largest MRU we allow */ -#define PPP_VERSION "2.3.3" +#define PPP_VERSION "2.3.7" #define PPP_MAGIC 0x5002 /* Magic value for the ppp structure */ #define PROTO_IPX 0x002b /* protocol numbers */ #define PROTO_DNA_RT 0x0027 /* DNA Routing */ @@ -73,7 +67,8 @@ #define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */ #define SC_LOG_RAWIN 0x00080000 /* log all chars received */ #define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */ -#define SC_MASK 0x0f0000ff /* bits that user can change */ +#define SC_SYNC 0x00200000 /* synchronous serial mode */ +#define SC_MASK 0x0f2000ff /* bits that user can change */ /* state bits */ #define SC_XMIT_BUSY 0x10000000 /* (used by isdn_ppp?) */ diff --git a/include/linux/if_pppvar.h b/include/linux/if_pppvar.h index 6fae4b94b..d6cd0c25b 100644 --- a/include/linux/if_pppvar.h +++ b/include/linux/if_pppvar.h @@ -42,7 +42,7 @@ */ /* - * ==FILEVERSION 990114== + * ==FILEVERSION 990325== * * NOTE TO MAINTAINERS: * If you modify this file at all, please set the above date. @@ -89,6 +89,7 @@ struct ppp { __u8 escape; /* 0x20 if prev char was PPP_ESC */ __u8 toss; /* toss this frame */ volatile __u8 tty_pushing; /* internal state flag */ + volatile __u8 woke_up; /* internal state flag */ __u32 xmit_async_map[8]; /* 1 bit means that given control character is quoted on output*/ __u32 recv_async_map; /* 1 bit means that given control diff --git a/include/linux/if_shaper.h b/include/linux/if_shaper.h index 57ffd730a..8a3cbce1b 100644 --- a/include/linux/if_shaper.h +++ b/include/linux/if_shaper.h @@ -23,7 +23,7 @@ struct shaper __u32 shapeclock; __u32 recovery; /* Time we can next clock a packet out on an empty queue */ - char locked; + unsigned long locked; struct device *dev; int (*hard_start_xmit) (struct sk_buff *skb, struct device *dev); diff --git a/include/linux/in.h b/include/linux/in.h index 0dc2231a4..8d6c8b5b6 100644 --- a/include/linux/in.h +++ b/include/linux/in.h @@ -80,7 +80,6 @@ struct in_addr { /* These need to appear somewhere around here */ #define IP_DEFAULT_MULTICAST_TTL 1 #define IP_DEFAULT_MULTICAST_LOOP 1 -#define IP_MAX_MEMBERSHIPS 20 /* Request struct for multicast socket ops */ diff --git a/include/linux/in6.h b/include/linux/in6.h index 50f9d2d72..4f31677b9 100644 --- a/include/linux/in6.h +++ b/include/linux/in6.h @@ -67,6 +67,33 @@ struct ipv6_mreq { int ipv6mr_ifindex; }; +struct in6_flowlabel_req +{ + struct in6_addr flr_dst; + __u32 flr_label; + __u8 flr_action; + __u8 flr_share; + __u16 flr_flags; + __u16 flr_expires; + __u16 flr_linger; + __u32 __flr_pad; + /* Options in format of IPV6_PKTOPTIONS */ +}; + +#define IPV6_FL_A_GET 0 +#define IPV6_FL_A_PUT 1 +#define IPV6_FL_A_RENEW 2 + +#define IPV6_FL_F_CREATE 1 +#define IPV6_FL_F_EXCL 2 + +#define IPV6_FL_S_NONE 0 +#define IPV6_FL_S_EXCL 1 +#define IPV6_FL_S_PROCESS 2 +#define IPV6_FL_S_USER 3 +#define IPV6_FL_S_ANY 255 + + /* * Bitmask constant declarations to help applications select out the * flow label and priority fields. @@ -75,9 +102,10 @@ struct ipv6_mreq { * sockaddr_in6 is in network byte order. */ -#define IPV6_FLOWINFO_FLOWLABEL 0x00ff -#define IPV6_FLOWINFO_PRIORITY 0x0f00 +#define IPV6_FLOWINFO_FLOWLABEL 0x000fffff +#define IPV6_FLOWINFO_PRIORITY 0x0ff00000 +/* These defintions are obsolete */ #define IPV6_PRIORITY_UNCHARACTERIZED 0x0000 #define IPV6_PRIORITY_FILLER 0x0100 #define IPV6_PRIORITY_UNATTENDED 0x0200 @@ -129,6 +157,7 @@ struct ipv6_mreq { #define IPV6_HOPLIMIT 8 #define IPV6_NEXTHOP 9 #define IPV6_AUTHHDR 10 +#define IPV6_FLOWINFO 11 #if 0 /* Aliases for obsolete names */ @@ -158,4 +187,9 @@ struct ipv6_mreq { #define IPV6_PMTUDISC_WANT 1 #define IPV6_PMTUDISC_DO 2 +/* Flowlabel */ +#define IPV6_FLOWLABEL_MGR 32 +#define IPV6_FLOWINFO_SEND 33 + + #endif diff --git a/include/linux/irda.h b/include/linux/irda.h new file mode 100644 index 000000000..275d82fc9 --- /dev/null +++ b/include/linux/irda.h @@ -0,0 +1,120 @@ +/********************************************************************* + * + * Filename: irda.h + * Version: + * Description: + * Status: Experimental. + * Author: Dag Brattli <dagb@cs.uit.no> + * Created at: Mon Mar 8 14:06:12 1999 + * Modified at: Mon Mar 22 14:14:54 1999 + * Modified by: Dag Brattli <dagb@cs.uit.no> + * + * Copyright (c) 1999 Dag Brattli, All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * Neither Dag Brattli nor University of Tromsø admit liability nor + * provide warranty for any of this software. This material is + * provided "AS-IS" and at no charge. + * + ********************************************************************/ + +#ifndef KERNEL_IRDA_H +#define KERNEL_IRDA_H + +/* Hint bit positions for first hint byte */ +#define HINT_PNP 0x01 +#define HINT_PDA 0x02 +#define HINT_COMPUTER 0x04 +#define HINT_PRINTER 0x08 +#define HINT_MODEM 0x10 +#define HINT_FAX 0x20 +#define HINT_LAN 0x40 +#define HINT_EXTENSION 0x80 + +/* Hint bit positions for second hint byte (first extension byte) */ +#define HINT_TELEPHONY 0x01 +#define HINT_FILE_SERVER 0x02 +#define HINT_COMM 0x04 +#define HINT_MESSAGE 0x08 +#define HINT_HTTP 0x10 +#define HINT_OBEX 0x20 + +/* IrLMP character code values */ +#define CS_ASCII 0x00 +#define CS_ISO_8859_1 0x01 +#define CS_ISO_8859_2 0x02 +#define CS_ISO_8859_3 0x03 +#define CS_ISO_8859_4 0x04 +#define CS_ISO_8859_5 0x05 +#define CS_ISO_8859_6 0x06 +#define CS_ISO_8859_7 0x07 +#define CS_ISO_8859_8 0x08 +#define CS_ISO_8859_9 0x09 +#define CS_UNICODE 0xff + +#define SOL_IRLMP 266 /* Same as SOL_IRDA for now */ +#define SOL_IRTTP 266 /* Same as SOL_IRDA for now */ + +#define IRLMP_ENUMDEVICES 1 +#define IRLMP_IAS_SET 2 +#define IRLMP_IAS_QUERY 3 +#define IRLMP_DISCOVERY_MASK_SET 4 + +#define IRTTP_QOS_SET 5 +#define IRTTP_QOS_GET 6 +#define IRTTP_MAX_SDU_SIZE 7 + +#define IAS_MAX_STRING 256 +#define IAS_MAX_OCTET_STRING 1024 +#define IAS_MAX_CLASSNAME 64 +#define IAS_MAX_ATTRIBNAME 256 + +#define LSAP_ANY 0xff + +struct sockaddr_irda { + sa_family_t sir_family; /* AF_IRDA */ + unsigned char sir_lsap_sel; /* LSAP/TSAP selector */ + unsigned int sir_addr; /* Device address */ + char sir_name[25]; /* Usually <service>:IrDA:TinyTP */ +}; + +struct irda_device_info { + unsigned int saddr; /* Address of remote device */ + unsigned int daddr; /* Link where it was discovered */ + char info[22]; /* Description */ + unsigned char charset; /* Charset used for description */ + unsigned char hints[2]; /* Hint bits */ +}; + +struct irda_device_list { + unsigned int len; + struct irda_device_info dev[0]; +}; + +struct irda_ias_set { + char irda_class_name[IAS_MAX_CLASSNAME]; + char irda_attrib_name[IAS_MAX_ATTRIBNAME]; + unsigned int irda_attrib_type; + union { + unsigned int irda_attrib_int; + struct { + unsigned short len; + u_char OctetSeq[IAS_MAX_OCTET_STRING]; + } irda_attrib_octet_seq; + struct { + unsigned char len; + unsigned char charset; + unsigned char string[IAS_MAX_STRING]; + } irda_attrib_string; + } attribute; +}; + +#endif /* KERNEL_IRDA_H */ + + + + diff --git a/include/linux/iso_fs.h b/include/linux/iso_fs.h index 30a14b169..0fcb4b822 100644 --- a/include/linux/iso_fs.h +++ b/include/linux/iso_fs.h @@ -189,7 +189,7 @@ int get_acorn_filename(struct iso_directory_record *, char *, struct inode *); extern int isofs_open(struct inode * inode, struct file * filp); extern void isofs_release(struct inode * inode, struct file * filp); -extern int isofs_lookup(struct inode * dir, struct dentry *); +extern struct dentry *isofs_lookup(struct inode * dir, struct dentry *); extern unsigned long isofs_count_free_inodes(struct super_block *sb); extern int isofs_new_block(int dev); extern int isofs_free_block(int dev, int block); diff --git a/include/linux/kbd_ll.h b/include/linux/kbd_ll.h index d83f9ea8a..02ebf8ec8 100644 --- a/include/linux/kbd_ll.h +++ b/include/linux/kbd_ll.h @@ -7,6 +7,6 @@ extern struct pt_regs *kbd_pt_regs; -void handle_scancode(unsigned char scancode); +void handle_scancode(unsigned char scancode, int down); #endif /* _KBD_LL_H */ diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index 5c1d0e4cc..384e14689 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h @@ -145,7 +145,7 @@ void nlm_shutdown_hosts(void); * Server-side lock handling */ u32 nlmsvc_lock(struct svc_rqst *, struct nlm_file *, - struct nlm_lock *, int, u32); + struct nlm_lock *, int, struct nlm_cookie *); u32 nlmsvc_unlock(struct nlm_file *, struct nlm_lock *); u32 nlmsvc_testlock(struct nlm_file *, struct nlm_lock *, struct nlm_lock *); diff --git a/include/linux/lockd/xdr.h b/include/linux/lockd/xdr.h index 631a8fba8..f397306c4 100644 --- a/include/linux/lockd/xdr.h +++ b/include/linux/lockd/xdr.h @@ -25,10 +25,21 @@ struct nlm_lock { }; /* + * NLM cookies. Technically they can be 1K, Nobody uses over 8 bytes + * however. + */ + +struct nlm_cookie +{ + unsigned char data[8]; + unsigned int len; +}; + +/* * Generic lockd arguments for all but sm_notify */ struct nlm_args { - u32 cookie; + struct nlm_cookie cookie; struct nlm_lock lock; u32 block; u32 reclaim; @@ -42,7 +53,7 @@ struct nlm_args { * Generic lockd result */ struct nlm_res { - u32 cookie; + struct nlm_cookie cookie; u32 status; struct nlm_lock lock; }; diff --git a/include/linux/mca.h b/include/linux/mca.h index 9dc61d00b..5b6a6ebf0 100644 --- a/include/linux/mca.h +++ b/include/linux/mca.h @@ -39,27 +39,27 @@ things. */ specify a starting slot beyond zero, to deal with detecting multiple devices. Returns MCA_NOTFOUND if id not found. Also checks the integrated adapters. */ -extern int mca_find_adapter( int id, int start ); -extern int mca_find_unused_adapter( int id, int start ); +extern int mca_find_adapter(int id, int start); +extern int mca_find_unused_adapter(int id, int start); /* adapter state info - returns 0 if no */ -extern int mca_isadapter( int slot ); -extern int mca_isenabled( int slot ); +extern int mca_isadapter(int slot); +extern int mca_isenabled(int slot); -extern int mca_is_adapter_used( int slot ); -extern int mca_mark_as_used( int slot ); -extern void mca_mark_as_unused( int slot ); +extern int mca_is_adapter_used(int slot); +extern int mca_mark_as_used(int slot); +extern void mca_mark_as_unused(int slot); /* gets a byte out of POS register (stored in memory) */ -extern unsigned char mca_read_stored_pos( int slot, int reg ); +extern unsigned char mca_read_stored_pos(int slot, int reg); /* This can be expanded later. Right now, it gives us a way of getting meaningful information into the MCA_info structure, so we can have a more interesting /proc/mca. */ -extern void mca_set_adapter_name( int slot, char* name ); -extern char* mca_get_adapter_name( int slot ); +extern void mca_set_adapter_name(int slot, char* name); +extern char* mca_get_adapter_name(int slot); /* This sets up an information callback for /proc/mca/slot?. The @@ -73,8 +73,8 @@ extern char* mca_get_adapter_name( int slot ); unregisters, thus preventing kernel crashes and other such nastiness. */ -typedef int (*MCA_ProcFn)( char* buf, int slot, void* dev ); -extern void mca_set_adapter_procfn( int slot, MCA_ProcFn, void* dev ); +typedef int (*MCA_ProcFn)(char* buf, int slot, void* dev); +extern void mca_set_adapter_procfn(int slot, MCA_ProcFn, void* dev); /* These routines actually mess with the hardware POS registers. They temporarily disable the device (and interrupts), so make sure you know @@ -88,13 +88,13 @@ limits. */ /* read a byte from the specified POS register. */ -extern unsigned char mca_read_pos( int slot, int reg ); +extern unsigned char mca_read_pos(int slot, int reg); /* write a byte to the specified POS register. */ -extern void mca_write_pos( int slot, int reg, unsigned char byte ); +extern void mca_write_pos(int slot, int reg, unsigned char byte); /* Should only be called by the NMI interrupt handler, this will do some fancy stuff to figure out what might have generated a NMI. */ -extern void mca_handle_nmi( void ); +extern void mca_handle_nmi(void); #endif /* _LINUX_MCA_H */ diff --git a/include/linux/minix_fs.h b/include/linux/minix_fs.h index 3a0635946..4682ee56e 100644 --- a/include/linux/minix_fs.h +++ b/include/linux/minix_fs.h @@ -89,7 +89,7 @@ struct minix_dir_entry { #ifdef __KERNEL__ -extern int minix_lookup(struct inode * dir, struct dentry *dentry); +extern struct dentry *minix_lookup(struct inode * dir, struct dentry *dentry); extern int minix_create(struct inode * dir, struct dentry *dentry, int mode); extern int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode); extern int minix_rmdir(struct inode * dir, struct dentry *dentry); diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h index e3d5f237b..e04dc1b42 100644 --- a/include/linux/miscdevice.h +++ b/include/linux/miscdevice.h @@ -16,7 +16,7 @@ #define RTC_MINOR 135 #define SUN_OPENPROM_MINOR 139 #define NVRAM_MINOR 144 -#define RADIO_MINOR 152 +#define I2O_MINOR 166 #define MISC_DYNAMIC_MINOR 255 #define SGI_GRAPHICS_MINOR 146 diff --git a/include/linux/mm.h b/include/linux/mm.h index 2413bfedf..ed4eeca0c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -177,10 +177,12 @@ typedef struct page { (test_and_clear_bit(PG_swap_cache, &(page)->flags)) /* - * page->reserved denotes a page which must never be accessed (which + * Various page->flags bits: + * + * PG_reserved is set for a page which must never be accessed (which * may not even be present). * - * page->dma is set for those pages which lie in the range of + * PG_DMA is set for those pages which lie in the range of * physical addresses capable of carrying DMA transfers. * * Multiple processes may "see" the same page. E.g. for untouched @@ -204,8 +206,8 @@ typedef struct page { * The following discussion applies only to them. * * A page may belong to an inode's memory mapping. In this case, - * page->inode is the inode, and page->offset is the file offset - * of the page (not necessarily a multiple of PAGE_SIZE). + * page->inode is the pointer to the inode, and page->offset is the + * file offset of the page (not necessarily a multiple of PAGE_SIZE). * * A page may have buffers allocated to it. In this case, * page->buffers is a circular list of these buffer heads. Else, @@ -219,7 +221,7 @@ typedef struct page { * fields are also used for freelist management when page->count==0.) * There is also a hash table mapping (inode,offset) to the page * in memory if present. The lists for this hash table use the fields - * page->next_hash and page->prev_hash. + * page->next_hash and page->pprev_hash. * * All process pages can do I/O: * - inode pages may need to be read from disk, @@ -227,18 +229,23 @@ typedef struct page { * to be written to disk, * - private pages which have been modified may need to be swapped out * to swap space and (later) to be read back into memory. - * During disk I/O, page->locked is true. This bit is set before I/O + * During disk I/O, PG_locked is used. This bit is set before I/O * and reset when I/O completes. page->wait is a wait queue of all * tasks waiting for the I/O on this page to complete. - * page->uptodate tells whether the page's contents is valid. + * PG_uptodate tells whether the page's contents is valid. * When a read completes, the page becomes uptodate, unless a disk I/O * error happened. - * When a write completes, and page->free_after is true, the page is + * When a write completes, and PG_free_after is set, the page is * freed without any further delay. * * For choosing which pages to swap out, inode pages carry a - * page->referenced bit, which is set any time the system accesses + * PG_referenced bit, which is set any time the system accesses * that page through the (inode,offset) hash table. + * + * PG_skip is used on sparc/sparc64 architectures to "skip" certain + * parts of the address space. + * + * PG_error is set to indicate that an I/O error occurred on this page. */ extern mem_map_t * mem_map; @@ -351,11 +358,6 @@ extern void put_cached_page(unsigned long); #define GFP_LEVEL_MASK 0xf -/* - * Decide if we should try to do some swapout.. - */ -extern int free_memory_available(void); - /* vma is the first one with address < vma->vm_end, * and even address < vma->vm_start. Have to extend vma. */ static inline int expand_stack(struct vm_area_struct * vma, unsigned long address) diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index bcf4d0134..7e27f1ac6 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h @@ -195,7 +195,7 @@ struct fat_cache { }; /* misc.c */ -extern int is_binary(char conversion,char *extension); +extern int fat_is_binary(char conversion,char *extension); extern void lock_fat(struct super_block *sb); extern void unlock_fat(struct super_block *sb); extern int fat_add_cluster(struct inode *inode); @@ -271,7 +271,7 @@ extern struct super_block *msdos_read_super(struct super_block *sb,void *data, i /* msdos.c - these are for Umsdos */ extern void msdos_read_inode(struct inode *inode); -extern int msdos_lookup(struct inode *dir,struct dentry *); +extern struct dentry *msdos_lookup(struct inode *dir,struct dentry *); extern int msdos_create(struct inode *dir,struct dentry *dentry,int mode); extern int msdos_rmdir(struct inode *dir,struct dentry *dentry); extern int msdos_mkdir(struct inode *dir,struct dentry *dentry,int mode); @@ -312,7 +312,7 @@ extern void vfat_put_super(struct super_block *sb); extern struct super_block *vfat_read_super(struct super_block *sb,void *data, int silent); extern void vfat_read_inode(struct inode *inode); -extern int vfat_lookup(struct inode *dir,struct dentry *); +extern struct dentry *vfat_lookup(struct inode *dir,struct dentry *); /* vfat/vfatfs_syms.c */ extern struct file_system_type vfat_fs_type; diff --git a/include/linux/nbd.h b/include/linux/nbd.h index 45b060291..c2c0431f4 100644 --- a/include/linux/nbd.h +++ b/include/linux/nbd.h @@ -8,6 +8,7 @@ #define NBD_CLEAR_SOCK _IO( 0xab, 4 ) #define NBD_CLEAR_QUE _IO( 0xab, 5 ) #define NBD_PRINT_DEBUG _IO( 0xab, 6 ) +#define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 ) #ifdef MAJOR_NR @@ -60,13 +61,21 @@ struct nbd_device { #define NBD_REPLY_MAGIC 0x67446698 /* Do *not* use magics: 0x12560953 0x96744668. */ +/* + * This is packet used for communication between client and + * server. All data are in network byte order. + */ struct nbd_request { u32 magic; u32 type; /* == READ || == WRITE */ char handle[8]; u64 from; u32 len; -}; +} +#ifdef __GNUC__ + __attribute__ ((packed)) +#endif +; struct nbd_reply { u32 magic; diff --git a/include/linux/ncp.h b/include/linux/ncp.h index 83ad3f723..666ffff0f 100644 --- a/include/linux/ncp.h +++ b/include/linux/ncp.h @@ -3,6 +3,7 @@ * * Copyright (C) 1995 by Volker Lendecke * Modified for sparc by J.F. Chadima + * Modified for __constant_ntoh by Frank A. Vorstenbosch * */ @@ -58,11 +59,21 @@ struct ncp_volume_info { /* these define the attribute byte as seen by NCP */ #define aRONLY (ntohl(0x01000000)) -#define aHIDDEN (ntohl(0x02000000)) -#define aSYSTEM (ntohl(0x04000000)) +#define aHIDDEN (__constant_ntohl(0x02000000)) +#define aSYSTEM (__constant_ntohl(0x04000000)) #define aEXECUTE (ntohl(0x08000000)) #define aDIR (ntohl(0x10000000)) #define aARCH (ntohl(0x20000000)) +#define aSHARED (ntohl(0x80000000)) +#define aDONTSUBALLOCATE (ntohl(1L<<(11+8))) +#define aTRANSACTIONAL (ntohl(1L<<(12+8))) +#define aPURGE (ntohl(1L<<(16-8))) +#define aRENAMEINHIBIT (ntohl(1L<<(17-8))) +#define aDELETEINHIBIT (ntohl(1L<<(18-8))) +#define aDONTCOMPRESS (nothl(1L<<(27-24))) + +#define NCP_MIN_SYMLINK_SIZE 8 +#define NCP_MAX_SYMLINK_SIZE 512 #define AR_READ (ntohs(0x0100)) #define AR_WRITE (ntohs(0x0200)) diff --git a/include/linux/ncp_fs.h b/include/linux/ncp_fs.h index eb83cfe01..b30fd0610 100644 --- a/include/linux/ncp_fs.h +++ b/include/linux/ncp_fs.h @@ -13,6 +13,15 @@ #include <linux/types.h> #include <linux/ncp_mount.h> + +/* NLS charsets by ioctl */ +#define NCP_IOCSNAME_LEN 20 +struct ncp_nls_ioctl +{ + unsigned char codepage[NCP_IOCSNAME_LEN+1]; + unsigned char iocharset[NCP_IOCSNAME_LEN+1]; +}; + #include <linux/ncp_fs_sb.h> #include <linux/ncp_fs_i.h> @@ -111,6 +120,9 @@ struct ncp_privatedata_ioctl #define NCP_IOC_GETPRIVATEDATA _IOWR('n', 10, struct ncp_privatedata_ioctl) #define NCP_IOC_SETPRIVATEDATA _IOR('n', 10, struct ncp_privatedata_ioctl) +#define NCP_IOC_GETCHARSETS _IOWR('n', 11, struct ncp_nls_ioctl) +#define NCP_IOC_SETCHARSETS _IOR('n', 11, struct ncp_nls_ioctl) + /* * The packet size to allocate. One page should be enough. */ @@ -155,6 +167,12 @@ struct ncpfs_i { __u32 dirEntNum __attribute__((packed)); __u32 DosDirNum __attribute__((packed)); __u32 volNumber __attribute__((packed)); +#ifdef CONFIG_NCPFS_SMALLDOS + __u32 origNS; +#endif +#ifdef CONFIG_NCPFS_STRONG + __u32 nwattr; +#endif int opened; int access; __u32 server_file_handle __attribute__((packed)); @@ -272,11 +290,14 @@ static inline int ncp_namespace(struct inode *inode) return server->name_space[NCP_FINFO(inode)->volNumber]; } -static inline int ncp_preserve_case(struct inode *i) -{ +static inline int ncp_preserve_entry_case(struct inode *i, __u32 nscreator) { #if defined(CONFIG_NCPFS_NFS_NS) || defined(CONFIG_NCPFS_OS2_NS) int ns = ncp_namespace(i); #endif +#if defined(CONFIG_NCPFS_SMALLDOS) && defined(CONFIG_NCPFS_OS2_NS) + if ((ns == NW_NS_OS2) && (nscreator == NW_NS_DOS)) + return 0; +#endif return #ifdef CONFIG_NCPFS_OS2_NS (ns == NW_NS_OS2) || @@ -287,6 +308,11 @@ static inline int ncp_preserve_case(struct inode *i) 0; } +static inline int ncp_preserve_case(struct inode *i) +{ + return ncp_preserve_entry_case(i, NW_NS_OS2); +} + static inline int ncp_case_sensitive(struct inode *i) { #ifdef CONFIG_NCPFS_NFS_NS diff --git a/include/linux/ncp_fs_sb.h b/include/linux/ncp_fs_sb.h index 38492fc92..adf1eef66 100644 --- a/include/linux/ncp_fs_sb.h +++ b/include/linux/ncp_fs_sb.h @@ -73,6 +73,10 @@ struct ncp_server { size_t len; void* data; } priv; + + struct ncp_nls_ioctl nls_charsets; /* NLS user data */ + struct nls_table *nls_vol; /* codepage used on volume */ + struct nls_table *nls_io; /* charset used for input and display */ }; static inline int ncp_conn_valid(struct ncp_server *server) diff --git a/include/linux/ncp_mount.h b/include/linux/ncp_mount.h index 54bc5b943..a214372a5 100644 --- a/include/linux/ncp_mount.h +++ b/include/linux/ncp_mount.h @@ -16,11 +16,13 @@ #define NCP_MOUNT_VERSION 3 /* Values for flags */ -#define NCP_MOUNT_SOFT 0x0001 -#define NCP_MOUNT_INTR 0x0002 -#define NCP_MOUNT_STRONG 0x0004 /* enable delete/rename of r/o files */ -#define NCP_MOUNT_NO_OS2 0x0008 -#define NCP_MOUNT_NO_NFS 0x0010 +#define NCP_MOUNT_SOFT 0x0001 +#define NCP_MOUNT_INTR 0x0002 +#define NCP_MOUNT_STRONG 0x0004 /* enable delete/rename of r/o files */ +#define NCP_MOUNT_NO_OS2 0x0008 /* do not use OS/2 (LONG) namespace */ +#define NCP_MOUNT_NO_NFS 0x0010 /* do not use NFS namespace */ +#define NCP_MOUNT_EXTRAS 0x0020 +#define NCP_MOUNT_SYMLINKS 0x0040 /* enable symlinks */ struct ncp_mount_data { int version; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 41f6405ee..18e7fde28 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -65,33 +65,6 @@ #define MAX_HEADER (LL_MAX_HEADER + 48) #endif -struct neighbour; -struct neigh_parms; -struct sk_buff; - -/* - * We tag multicasts with these structures. - */ - -struct dev_mc_list -{ - struct dev_mc_list *next; - __u8 dmi_addr[MAX_ADDR_LEN]; - unsigned char dmi_addrlen; - int dmi_users; - int dmi_gusers; -}; - -struct hh_cache -{ - struct hh_cache *hh_next; /* Next entry */ - atomic_t hh_refcnt; /* number of users */ - unsigned short hh_type; /* protocol identifier, f.e ETH_P_IP */ - int (*hh_output)(struct sk_buff *skb); - /* cached hardware header; allow for machine alignment needs. */ - unsigned long hh_data[16/sizeof(unsigned long)]; -}; - /* * Network device statistics. Akin to the 2.0 ether stats but * with byte counters. @@ -157,6 +130,35 @@ extern const char *if_port_text[]; #include <linux/skbuff.h> +struct neighbour; +struct neigh_parms; +struct sk_buff; + +/* + * We tag multicasts with these structures. + */ + +struct dev_mc_list +{ + struct dev_mc_list *next; + __u8 dmi_addr[MAX_ADDR_LEN]; + unsigned char dmi_addrlen; + int dmi_users; + int dmi_gusers; +}; + +struct hh_cache +{ + struct hh_cache *hh_next; /* Next entry */ + atomic_t hh_refcnt; /* number of users */ + unsigned short hh_type; /* protocol identifier, f.e ETH_P_IP */ + int (*hh_output)(struct sk_buff *skb); + rwlock_t hh_lock; + /* cached hardware header; allow for machine alignment needs. */ + unsigned long hh_data[16/sizeof(unsigned long)]; +}; + + /* * The DEVICE structure. * Actually, this whole structure is a big mistake. It mixes I/O @@ -432,6 +434,7 @@ extern int dev_mc_add(struct device *dev, void *addr, int alen, int newonly); extern void dev_mc_discard(struct device *dev); extern void dev_set_promiscuity(struct device *dev, int inc); extern void dev_set_allmulti(struct device *dev, int inc); +extern void netdev_state_change(struct device *dev); /* Load a device via the kmod */ extern void dev_load(const char *name); extern void dev_mcast_init(void); diff --git a/include/linux/nfs.h b/include/linux/nfs.h index c4aab89e1..7936d5a71 100644 --- a/include/linux/nfs.h +++ b/include/linux/nfs.h @@ -41,6 +41,7 @@ enum nfs_stat { NFSERR_FBIG = 27, NFSERR_NOSPC = 28, NFSERR_ROFS = 30, + NFSERR_OPNOTSUPP = 45, NFSERR_NAMETOOLONG = 63, NFSERR_NOTEMPTY = 66, NFSERR_DQUOT = 69, diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index afd52c619..af9615066 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -98,8 +98,7 @@ do { \ struct nfs_wreq { struct rpc_listitem wb_list; /* linked list of req's */ struct rpc_task wb_task; /* RPC task */ - struct dentry * wb_dentry; /* dentry referenced */ - struct inode * wb_inode; /* inode referenced */ + struct file * wb_file; /* dentry referenced */ struct page * wb_page; /* page to be written */ struct wait_queue * wb_wait; /* wait for completion */ unsigned int wb_offset; /* offset within page */ @@ -182,6 +181,8 @@ extern struct inode *nfs_fhget(struct dentry *, struct nfs_fh *, struct nfs_fattr *); extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *); extern int nfs_revalidate(struct dentry *); +extern int nfs_open(struct inode *, struct file *); +extern int nfs_release(struct inode *, struct file *); extern int _nfs_revalidate_inode(struct nfs_server *, struct dentry *); /* @@ -213,7 +214,6 @@ extern int nfs_lock(struct file *, int, struct file_lock *); */ extern int nfs_writepage(struct file *, struct page *); extern int nfs_check_failed_request(struct inode *); -extern int nfs_check_error(struct inode *); /* * Try to write back everything synchronously (but check the @@ -221,8 +221,7 @@ extern int nfs_check_error(struct inode *); */ extern int nfs_wb_all(struct inode *); extern int nfs_wb_page(struct inode *, struct page *); -extern int nfs_wb_pid(struct inode *, pid_t); -extern int nfs_flush_trunc(struct inode *, unsigned long); +extern int nfs_wb_file(struct inode *, struct file *); /* * Invalidate write-backs, possibly trying to write them @@ -254,12 +253,6 @@ nfs_revalidate_inode(struct nfs_server *server, struct dentry *dentry) return _nfs_revalidate_inode(server, dentry); } -static inline int -nfs_write_error(struct inode *inode) -{ - return NFS_WRITEBACK(inode) && nfs_check_error(inode); -} - /* NFS root */ extern int nfs_root_mount(struct super_block *sb); diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index e33eaa418..dc16282e1 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h @@ -107,6 +107,9 @@ void nfsd_fh_flush(kdev_t); void nfsd_fh_init(void); void nfsd_fh_free(void); +void expire_all(void); +void expire_by_dentry(struct dentry *); + static __inline__ struct svc_fh * fh_copy(struct svc_fh *dst, struct svc_fh *src) { diff --git a/include/linux/openpic.h b/include/linux/openpic.h index ea3123483..9cf18c5da 100644 --- a/include/linux/openpic.h +++ b/include/linux/openpic.h @@ -313,15 +313,6 @@ extern u_char *OpenPIC_InitSenses; #define Vector_Priority _Vector_Priority.Reg #define Destination _Destination.Reg - - /* - * Vendor and Device IDs - */ - -#define OPENPIC_VENDOR_ID_APPLE 0x14 -#define OPENPIC_DEVICE_ID_APPLE_HYDRA 0x46 - - /* * OpenPIC Operations */ diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index e9305f9b8..3e1e89b44 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -17,10 +17,29 @@ static inline unsigned long page_address(struct page * page) return PAGE_OFFSET + PAGE_SIZE * (page - mem_map); } -#define PAGE_HASH_BITS 11 -#define PAGE_HASH_SIZE (1 << PAGE_HASH_BITS) +/* + * The page cache can done in larger chunks than + * one page, because it allows for more efficient + * throughput (it can then be mapped into user + * space in smaller chunks for same flexibility). + * + * Or rather, it _will_ be done in larger chunks. + */ +#define PAGE_CACHE_SHIFT PAGE_SHIFT +#define PAGE_CACHE_SIZE PAGE_SIZE +#define PAGE_CACHE_MASK PAGE_MASK + +#define page_cache_alloc() __get_free_page(GFP_USER) +#define page_cache_free(x) free_page(x) +#define page_cache_release(x) __free_page(x) -#define PAGE_AGE_VALUE 16 +/* + * From a kernel address, get the "struct page *" + */ +#define page_cache_entry(x) (mem_map + MAP_NR(x)) + +#define PAGE_HASH_BITS 12 +#define PAGE_HASH_SIZE (1 << PAGE_HASH_BITS) extern unsigned long page_cache_size; /* # of pages currently in the hash table */ extern struct page * page_hash_table[PAGE_HASH_SIZE]; diff --git a/include/linux/parport_pc.h b/include/linux/parport_pc.h index 65d8209e5..a74c7a121 100644 --- a/include/linux/parport_pc.h +++ b/include/linux/parport_pc.h @@ -14,8 +14,15 @@ #define STATUS 0x1 #define DATA 0 +/* Private data for PC low-level driver. */ +struct parport_pc_private { + /* Contents of CTR. */ + unsigned char ctr; +}; + extern int parport_pc_epp_clear_timeout(struct parport *pb); +extern volatile unsigned char parport_pc_ctr; extern __inline__ void parport_pc_write_epp(struct parport *p, unsigned char d) { @@ -62,19 +69,24 @@ extern __inline__ unsigned char parport_pc_read_data(struct parport *p) extern __inline__ void parport_pc_write_control(struct parport *p, unsigned char d) { + struct parport_pc_private *priv = p->private_data; + priv->ctr = d;/* update soft copy */ outb(d, p->base+CONTROL); } extern __inline__ unsigned char parport_pc_read_control(struct parport *p) { - return inb(p->base+CONTROL); + struct parport_pc_private *priv = p->private_data; + return priv->ctr; } extern __inline__ unsigned char parport_pc_frob_control(struct parport *p, unsigned char mask, unsigned char val) { - unsigned char old = inb(p->base+CONTROL); - outb(((old & ~mask) ^ val), p->base+CONTROL); - return old; + struct parport_pc_private *priv = p->private_data; + unsigned char ctr = priv->ctr; + ctr = (ctr & ~mask) ^ val; + outb (ctr, p->base+CONTROL); + return priv->ctr = ctr; /* update soft copy */ } extern __inline__ void parport_pc_write_status(struct parport *p, unsigned char d) diff --git a/include/linux/pc_keyb.h b/include/linux/pc_keyb.h index b79ecf0eb..29ccd3956 100644 --- a/include/linux/pc_keyb.h +++ b/include/linux/pc_keyb.h @@ -114,8 +114,12 @@ extern unsigned char aux_device_present; #define AUX_ENABLE_DEV 0xF4 /* Enable aux device */ #define AUX_DISABLE_DEV 0xF5 /* Disable aux device */ #define AUX_RESET 0xFF /* Reset aux device */ +#define AUX_ACK 0xFA /* Command byte ACK. */ -#define AUX_BUF_SIZE 2048 +#define AUX_BUF_SIZE 2048 /* This might be better divisible by + three to make overruns stay in sync + but then the read function would need + a lock etc - ick */ struct aux_queue { unsigned long head; diff --git a/include/linux/pci.h b/include/linux/pci.h index 6ba04c1d3..a4e4b9dfe 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -3,7 +3,7 @@ * * PCI defines and function prototypes * Copyright 1994, Drew Eckhardt - * Copyright 1997, 1998 Martin Mares <mj@atrey.karlin.mff.cuni.cz> + * Copyright 1997--1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz> * * For more information, please consult the following manuals (look at * http://www.pcisig.com/ for how to get them): @@ -36,9 +36,9 @@ #define PCI_COMMAND_FAST_BACK 0x200 /* Enable back-to-back writes */ #define PCI_STATUS 0x06 /* 16 bits */ +#define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ #define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */ #define PCI_STATUS_UDF 0x40 /* Support User Definable Features */ - #define PCI_STATUS_FAST_BACK 0x80 /* Accept fast-back to back */ #define PCI_STATUS_PARITY 0x100 /* Detected parity error */ #define PCI_STATUS_DEVSEL_MASK 0x600 /* DEVSEL timing */ @@ -101,7 +101,9 @@ #define PCI_ROM_ADDRESS_ENABLE 0x01 #define PCI_ROM_ADDRESS_MASK (~0x7ffUL) -/* 0x34-0x3b are reserved */ +#define PCI_CAPABILITY_LIST 0x34 /* Offset of first capability list entry */ + +/* 0x35-0x3b are reserved */ #define PCI_INTERRUPT_LINE 0x3c /* 8 bits */ #define PCI_INTERRUPT_PIN 0x3d /* 8 bits */ #define PCI_MIN_GNT 0x3e /* 8 bits */ @@ -182,6 +184,12 @@ #define PCI_CB_LEGACY_MODE_BASE 0x44 /* 16-bit PC Card legacy mode base address (ExCa) */ /* 0x48-0x7f reserved */ +/* Capability lists */ +#define PCI_CAP_LIST_ID 0 /* Capability ID */ +#define PCI_CAP_ID_PM 0x01 /* Power Management */ +#define PCI_CAP_ID_AGP 0x02 /* Accelerated Graphics Port */ +#define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */ + /* Device classes and subclasses */ #define PCI_CLASS_NOT_DEFINED 0x0000 @@ -356,6 +364,7 @@ #define PCI_DEVICE_ID_DEC_21052 0x0021 #define PCI_DEVICE_ID_DEC_21150 0x0022 #define PCI_DEVICE_ID_DEC_21152 0x0024 +#define PCI_DEVICE_ID_DEC_21153 0x0025 #define PCI_VENDOR_ID_CIRRUS 0x1013 #define PCI_DEVICE_ID_CIRRUS_7548 0x0038 @@ -379,6 +388,7 @@ #define PCI_DEVICE_ID_IBM_82G2675 0x001d #define PCI_DEVICE_ID_IBM_MCA 0x0020 #define PCI_DEVICE_ID_IBM_82351 0x0022 +#define PCI_DEVICE_ID_IBM_PYTHON 0x002d #define PCI_DEVICE_ID_IBM_SERVERAID 0x002e #define PCI_DEVICE_ID_IBM_TR_WAKE 0x003e #define PCI_DEVICE_ID_IBM_MPIC 0x0046 @@ -894,6 +904,10 @@ #define PCI_VENDOR_ID_CYCLADES 0x120e #define PCI_DEVICE_ID_CYCLOM_Y_Lo 0x0100 #define PCI_DEVICE_ID_CYCLOM_Y_Hi 0x0101 +#define PCI_DEVICE_ID_CYCLOM_4Y_Lo 0x0102 +#define PCI_DEVICE_ID_CYCLOM_4Y_Hi 0x0103 +#define PCI_DEVICE_ID_CYCLOM_8Y_Lo 0x0104 +#define PCI_DEVICE_ID_CYCLOM_8Y_Hi 0x0105 #define PCI_DEVICE_ID_CYCLOM_Z_Lo 0x0200 #define PCI_DEVICE_ID_CYCLOM_Z_Hi 0x0201 @@ -916,6 +930,9 @@ #define PCI_VENDOR_ID_CCUBE 0x123f +#define PCI_VENDOR_ID_AVM 0x1244 +#define PCI_DEVICE_ID_AVM_A1 0x0a00 + #define PCI_VENDOR_ID_DIPIX 0x1246 #define PCI_VENDOR_ID_STALLION 0x124d @@ -952,6 +969,9 @@ #define PCI_VENDOR_ID_CBOARDS 0x1307 #define PCI_DEVICE_ID_CBOARDS_DAS1602_16 0x0001 +#define PCI_VENDOR_ID_NETGEAR 0x1385 +#define PCI_DEVICE_ID_NETGEAR_GA620 0x620a + #define PCI_VENDOR_ID_SYMPHONY 0x1c1c #define PCI_DEVICE_ID_SYMPHONY_101 0x0001 @@ -1037,6 +1057,7 @@ #define PCI_DEVICE_ID_INTEL_82443BX_2 0x7192 #define PCI_DEVICE_ID_INTEL_P6 0x84c4 #define PCI_DEVICE_ID_INTEL_82450GX 0x84c5 +#define PCI_DEVICE_ID_INTEL_82451NX 0x84ca #define PCI_VENDOR_ID_KTI 0x8e2e #define PCI_DEVICE_ID_KTI_ET32P2 0x3000 @@ -1203,6 +1224,7 @@ void pci_init(void); void pci_setup(char *str, int *ints); void pci_quirks_init(void); unsigned int pci_scan_bus(struct pci_bus *bus); +struct pci_bus *pci_scan_peer_bridge(int bus); void pci_proc_init(void); void proc_old_pci_init(void); int get_pci_list(char *buf); diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h index 0c38cac86..36935ed3a 100644 --- a/include/linux/pkt_cls.h +++ b/include/linux/pkt_cls.h @@ -23,9 +23,12 @@ enum TCA_POLICE_TBF, TCA_POLICE_RATE, TCA_POLICE_PEAKRATE, + TCA_POLICE_AVRATE, + TCA_POLICE_RESULT +#define TCA_POLICE_RESULT TCA_POLICE_RESULT }; -#define TCA_POLICE_MAX TCA_POLICE_PEAKRATE +#define TCA_POLICE_MAX TCA_POLICE_RESULT /* U32 filters */ @@ -114,4 +117,30 @@ struct tc_rsvp_pinfo __u8 tunnelhdr; }; +/* ROUTE filter */ + +enum +{ + TCA_ROUTE4_UNSPEC, + TCA_ROUTE4_CLASSID, + TCA_ROUTE4_TO, + TCA_ROUTE4_FROM, + TCA_ROUTE4_IIF, + TCA_ROUTE4_POLICE, +}; + +#define TCA_ROUTE4_MAX TCA_ROUTE4_POLICE + + +/* FW filter */ + +enum +{ + TCA_FW_UNSPEC, + TCA_FW_CLASSID, + TCA_FW_POLICE, +}; + +#define TCA_FW_MAX TCA_FW_POLICE + #endif diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index e02d072f7..1de3fe2ec 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h @@ -174,6 +174,7 @@ enum scsi_directory_inos { PROC_SCSI_SEAGATE, PROC_SCSI_T128, PROC_SCSI_NCR53C7xx, + PROC_SCSI_SYM53C8XX, PROC_SCSI_NCR53C8XX, PROC_SCSI_ULTRASTOR, PROC_SCSI_7000FASST, @@ -184,6 +185,7 @@ enum scsi_directory_inos { PROC_SCSI_AM53C974, PROC_SCSI_SSC, PROC_SCSI_NCR53C406A, + PROC_SCSI_SYM53C416, PROC_SCSI_MEGARAID, PROC_SCSI_PPA, PROC_SCSI_ATP870U, @@ -203,6 +205,8 @@ enum scsi_directory_inos { PROC_SCSI_53C94, PROC_SCSI_PLUTO, PROC_SCSI_INI9100U, + PROC_SCSI_INIA100, + PROC_SCSI_FCAL, PROC_SCSI_SCSI_DEBUG, PROC_SCSI_NOT_PRESENT, PROC_SCSI_FILE, /* I'm assuming here that we */ @@ -379,7 +383,7 @@ extern int proc_match(int, const char *,struct proc_dir_entry *); * of the /proc/<pid> subdirectories. */ extern int proc_readdir(struct file *, void *, filldir_t); -extern int proc_lookup(struct inode *, struct dentry *); +extern struct dentry *proc_lookup(struct inode *, struct dentry *); struct openpromfs_dev { struct openpromfs_dev *next; @@ -391,7 +395,7 @@ struct openpromfs_dev { }; extern struct inode_operations * proc_openprom_register(int (*readdir)(struct file *, void *, filldir_t), - int (*lookup)(struct inode *, struct dentry *), + struct dentry * (*lookup)(struct inode *, struct dentry *), void (*use)(struct inode *, int), struct openpromfs_dev ***); extern void proc_openprom_deregister(void); diff --git a/include/linux/qnx4_fs.h b/include/linux/qnx4_fs.h index eb2b3dc08..c5a010394 100644 --- a/include/linux/qnx4_fs.h +++ b/include/linux/qnx4_fs.h @@ -95,7 +95,7 @@ struct qnx4_super_block { #define QNX4DEBUG(X) (void) 0 #endif -extern int qnx4_lookup(struct inode *dir, struct dentry *dentry); +extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry); extern unsigned long qnx4_count_free_inodes(struct super_block *sb); extern unsigned long qnx4_count_free_blocks(struct super_block *sb); diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index a2a00a04c..b31daec41 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h @@ -55,7 +55,7 @@ extern __inline__ int DQUOT_PREALLOC_BLOCK(struct super_block *sb, const struct { if (sb->dq_op) { if (sb->dq_op->alloc_block(inode, fs_to_dq_blocks(nr, sb->s_blocksize), - current->euid, 0) == NO_QUOTA) + current->fsuid, 0) == NO_QUOTA) return 1; } return 0; @@ -65,7 +65,7 @@ extern __inline__ int DQUOT_ALLOC_BLOCK(struct super_block *sb, const struct ino { if (sb->dq_op) { if (sb->dq_op->alloc_block(inode, fs_to_dq_blocks(nr, sb->s_blocksize), - current->euid, 1) == NO_QUOTA) + current->fsuid, 1) == NO_QUOTA) return 1; } return 0; @@ -75,7 +75,7 @@ extern __inline__ int DQUOT_ALLOC_INODE(struct super_block *sb, struct inode *in { if (sb->dq_op) { sb->dq_op->initialize (inode, -1); - if (sb->dq_op->alloc_inode (inode, 1, current->euid)) + if (sb->dq_op->alloc_inode (inode, 1, current->fsuid)) return 1; } inode->i_flags |= S_QUOTA; @@ -101,11 +101,11 @@ extern __inline__ int DQUOT_TRANSFER(struct dentry *dentry, struct iattr *iattr) if (dentry->d_inode->i_sb->dq_op) { if (IS_QUOTAINIT(dentry->d_inode) == 0) dentry->d_inode->i_sb->dq_op->initialize(dentry->d_inode, -1); - if (dentry->d_inode->i_sb->dq_op->transfer(dentry->d_inode, iattr, 0, current->euid)) + if (dentry->d_inode->i_sb->dq_op->transfer(dentry->d_inode, iattr, 0, current->fsuid)) goto out; error = notify_change(dentry, iattr); if (error) - dentry->d_inode->i_sb->dq_op->transfer(dentry->d_inode, iattr, 1, current->euid); + dentry->d_inode->i_sb->dq_op->transfer(dentry->d_inode, iattr, 1, current->fsuid); } else { error = notify_change(dentry, iattr); } diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index be607392c..b339f6528 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h @@ -139,6 +139,7 @@ enum #define RTPROT_RA 9 /* RDISC/ND router advertisments */ #define RTPROT_MRT 10 /* Merit MRT */ #define RTPROT_ZEBRA 11 /* Zebra */ +#define RTPROT_BIRD 12 /* BIRD */ /* rtm_scope diff --git a/include/linux/sched.h b/include/linux/sched.h index b37bce2cc..e0066b3f6 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -112,9 +112,10 @@ struct sched_param { * a separate lock). */ extern rwlock_t tasklist_lock; -extern spinlock_t scheduler_lock; +extern spinlock_t runqueue_lock; extern void sched_init(void); +extern void init_idle(void); extern void show_state(void); extern void trap_init(void); @@ -174,6 +175,8 @@ struct mm_struct { unsigned long rss, total_vm, locked_vm; unsigned long def_flags; unsigned long cpu_vm_mask; + unsigned long swap_cnt; /* number of pages to swap on next pass */ + unsigned long swap_address; /* * This is an architecture-specific pointer: the portable * part of Linux does not know about any segments. @@ -191,7 +194,7 @@ struct mm_struct { 0, 0, 0, \ 0, 0, 0, 0, \ 0, 0, 0, \ - 0, 0, NULL } + 0, 0, 0, 0, NULL } struct signal_struct { atomic_t count; @@ -276,8 +279,6 @@ struct task_struct { /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */ unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap; int swappable:1; - unsigned long swap_address; - unsigned long swap_cnt; /* number of pages to swap on next pass */ /* process credentials */ uid_t uid,euid,suid,fsuid; gid_t gid,egid,sgid,fsgid; @@ -361,7 +362,7 @@ struct task_struct { /* utime */ {0,0,0,0},0, \ /* per CPU times */ {0, }, {0, }, \ /* flt */ 0,0,0,0,0,0, \ -/* swp */ 0,0,0, \ +/* swp */ 0, \ /* process credentials */ \ /* uid etc */ 0,0,0,0,0,0,0,0, \ /* suppl grps*/ 0, {0,}, \ @@ -673,6 +674,58 @@ extern inline void remove_wait_queue(struct wait_queue ** p, struct wait_queue * write_unlock_irqrestore(&waitqueue_lock, flags); } +#define __wait_event(wq, condition) \ +do { \ + struct wait_queue __wait; \ + \ + __wait.task = current; \ + add_wait_queue(&wq, &__wait); \ + for (;;) { \ + current->state = TASK_UNINTERRUPTIBLE; \ + if (condition) \ + break; \ + schedule(); \ + } \ + current->state = TASK_RUNNING; \ + remove_wait_queue(&wq, &__wait); \ +} while (0) + +#define wait_event(wq, condition) \ +do { \ + if (condition) \ + break; \ + __wait_event(wq, condition); \ +} while (0) + +#define __wait_event_interruptible(wq, condition, ret) \ +do { \ + struct wait_queue __wait; \ + \ + __wait.task = current; \ + add_wait_queue(&wq, &__wait); \ + for (;;) { \ + current->state = TASK_INTERRUPTIBLE; \ + if (condition) \ + break; \ + if (!signal_pending(current)) { \ + schedule(); \ + continue; \ + } \ + ret = -ERESTARTSYS; \ + break; \ + } \ + current->state = TASK_RUNNING; \ + remove_wait_queue(&wq, &__wait); \ +} while (0) + +#define wait_event_interruptible(wq, condition) \ +({ \ + int __ret = 0; \ + if (!(condition)) \ + __wait_event_interruptible(wq, condition, __ret); \ + __ret; \ +}) + #define REMOVE_LINKS(p) do { \ (p)->next_task->prev_task = (p)->prev_task; \ (p)->prev_task->next_task = (p)->next_task; \ diff --git a/include/linux/selection.h b/include/linux/selection.h index 45e4712b4..74d1b24d6 100644 --- a/include/linux/selection.h +++ b/include/linux/selection.h @@ -38,7 +38,7 @@ extern void invert_screen(int currcons, int offset, int count, int shift); extern void getconsxy(int currcons, char *p); extern void putconsxy(int currcons, char *p); -extern u16 vcs_scr_readw(int currcons, u16 *org); +extern u16 vcs_scr_readw(int currcons, const u16 *org); extern void vcs_scr_writew(int currcons, u16 val, u16 *org); #endif diff --git a/include/linux/smb_fs.h b/include/linux/smb_fs.h index 35478fe4d..a151a75e6 100644 --- a/include/linux/smb_fs.h +++ b/include/linux/smb_fs.h @@ -14,7 +14,7 @@ /* * ioctl commands */ -#define SMB_IOC_GETMOUNTUID _IOR('u', 1, uid_t) +#define SMB_IOC_GETMOUNTUID _IOR('u', 1, __kernel_uid_t) #define SMB_IOC_NEWCONN _IOW('u', 2, struct smb_conn_opt) #ifdef __KERNEL__ diff --git a/include/linux/smp.h b/include/linux/smp.h index 80ea3056f..75c34e87f 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h @@ -42,6 +42,12 @@ extern void smp_callin(void); extern void smp_commence(void); /* + * Call a function on all other processors + */ +extern int smp_call_function (void (*func) (void *info), void *info, + int retry, int wait); + +/* * True once the per process idle is forked */ extern int smp_threads_ready; @@ -60,7 +66,7 @@ extern volatile int smp_msg_id; * when rebooting */ #define MSG_RESCHEDULE 0x0003 /* Reschedule request from master CPU*/ -#define MSG_MTRR_CHANGE 0x0004 /* Change MTRR */ +#define MSG_CALL_FUNCTION 0x0004 /* Call function on all other CPUs */ #else @@ -68,12 +74,13 @@ extern volatile int smp_msg_id; * These macros fold the SMP functionality into a single CPU system */ -#define smp_num_cpus 1 -#define smp_processor_id() 0 -#define hard_smp_processor_id() 0 -#define smp_threads_ready 1 +#define smp_num_cpus 1 +#define smp_processor_id() 0 +#define hard_smp_processor_id() 0 +#define smp_threads_ready 1 #define kernel_lock() -#define cpu_logical_map(cpu) 0 +#define cpu_logical_map(cpu) 0 +#define smp_call_function(func,info,retry,wait) #endif #endif diff --git a/include/linux/socket.h b/include/linux/socket.h index 41e759751..bcb7ce731 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h @@ -234,6 +234,7 @@ struct ucred { #define SOL_PACKET 263 #define SOL_ATM 264 /* ATM layer (cell level) */ #define SOL_AAL 265 /* ATM Adaption Layer (packet level) */ +#define SOL_IRDA 266 /* IPX options */ #define IPX_TYPE 1 diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index 8563307a8..5f8dc8768 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h @@ -39,7 +39,7 @@ struct svc_sock { void (*sk_odata)(struct sock *, int bytes); /* private TCP part */ - unsigned long sk_reclen; /* length of record */ + int sk_reclen; /* length of record */ int sk_tcplen; /* current read length */ /* Debugging */ diff --git a/include/linux/synclink.h b/include/linux/synclink.h new file mode 100644 index 000000000..69dc86725 --- /dev/null +++ b/include/linux/synclink.h @@ -0,0 +1,243 @@ +/* + * SyncLink Multiprotocol Serial Adapter Driver + * + * Copyright (C) 1998 by Microgate Corporation + * + * Redistribution of this file is permitted under + * the terms of the GNU Public License (GPL) + */ + +#ifndef _SYNCLINK_H_ +#define _SYNCLINK_H_ + +#define BOOLEAN int +#define TRUE 1 +#define FALSE 0 + +#define BIT0 0x0001 +#define BIT1 0x0002 +#define BIT2 0x0004 +#define BIT3 0x0008 +#define BIT4 0x0010 +#define BIT5 0x0020 +#define BIT6 0x0040 +#define BIT7 0x0080 +#define BIT8 0x0100 +#define BIT9 0x0200 +#define BIT10 0x0400 +#define BIT11 0x0800 +#define BIT12 0x1000 +#define BIT13 0x2000 +#define BIT14 0x4000 +#define BIT15 0x8000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 + + +#define HDLC_MAX_FRAME_SIZE 4096 +#define MAX_ASYNC_TRANSMIT 4096 + +#define ASYNC_PARITY_NONE 0 +#define ASYNC_PARITY_EVEN 1 +#define ASYNC_PARITY_ODD 2 +#define ASYNC_PARITY_SPACE 3 + +#define HDLC_FLAG_UNDERRUN_ABORT7 0x0000 +#define HDLC_FLAG_UNDERRUN_ABORT15 0x0001 +#define HDLC_FLAG_UNDERRUN_FLAG 0x0002 +#define HDLC_FLAG_UNDERRUN_CRC 0x0004 +#define HDLC_FLAG_SHARE_ZERO 0x0010 +#define HDLC_FLAG_AUTO_CTS 0x0020 +#define HDLC_FLAG_AUTO_DCD 0x0040 +#define HDLC_FLAG_AUTO_RTS 0x0080 +#define HDLC_FLAG_RXC_DPLL 0x0100 +#define HDLC_FLAG_RXC_BRG 0x0200 +#define HDLC_FLAG_TXC_DPLL 0x0400 +#define HDLC_FLAG_TXC_BRG 0x0800 +#define HDLC_FLAG_DPLL_DIV8 0x1000 +#define HDLC_FLAG_DPLL_DIV16 0x2000 +#define HDLC_FLAG_DPLL_DIV32 0x0000 + +#define HDLC_CRC_NONE 0 +#define HDLC_CRC_16_CCITT 1 + +#define HDLC_TXIDLE_FLAGS 0 +#define HDLC_TXIDLE_ALT_ZEROS_ONES 1 +#define HDLC_TXIDLE_ZEROS 2 +#define HDLC_TXIDLE_ONES 3 +#define HDLC_TXIDLE_ALT_MARK_SPACE 4 +#define HDLC_TXIDLE_SPACE 5 +#define HDLC_TXIDLE_MARK 6 + +#define HDLC_ENCODING_NRZ 0 +#define HDLC_ENCODING_NRZB 1 +#define HDLC_ENCODING_NRZI_MARK 2 +#define HDLC_ENCODING_NRZI_SPACE 3 +#define HDLC_ENCODING_BIPHASE_MARK 4 +#define HDLC_ENCODING_BIPHASE_SPACE 5 +#define HDLC_ENCODING_BIPHASE_LEVEL 6 +#define HDLC_ENCODING_DIFF_BIPHASE_LEVEL 7 + +#define HDLC_PREAMBLE_LENGTH_8BITS 0 +#define HDLC_PREAMBLE_LENGTH_16BITS 1 +#define HDLC_PREAMBLE_LENGTH_32BITS 2 +#define HDLC_PREAMBLE_LENGTH_64BITS 3 + +#define HDLC_PREAMBLE_PATTERN_NONE 0 +#define HDLC_PREAMBLE_PATTERN_ZEROS 1 +#define HDLC_PREAMBLE_PATTERN_FLAGS 2 +#define HDLC_PREAMBLE_PATTERN_10 3 +#define HDLC_PREAMBLE_PATTERN_01 4 +#define HDLC_PREAMBLE_PATTERN_ONES 5 + +#define MGSL_MODE_ASYNC 1 +#define MGSL_MODE_HDLC 2 + +#define MGSL_BUS_TYPE_ISA 1 +#define MGSL_BUS_TYPE_EISA 2 +#define MGSL_BUS_TYPE_PCI 5 + +typedef struct _MGSL_PARAMS +{ + /* Common */ + + unsigned long mode; /* Asynchronous or HDLC */ + unsigned char loopback; /* internal loopback mode */ + + /* HDLC Only */ + + unsigned short flags; + unsigned char encoding; /* NRZ, NRZI, etc. */ + unsigned long clock_speed; /* external clock speed in bits per second */ + unsigned char addr_filter; /* receive HDLC address filter, 0xFF = disable */ + unsigned short crc_type; /* None, CRC16 or CRC16-CCITT */ + unsigned char preamble_length; + unsigned char preamble; + + /* Async Only */ + + unsigned long data_rate; /* bits per second */ + unsigned char data_bits; /* 7 or 8 data bits */ + unsigned char stop_bits; /* 1 or 2 stop bits */ + unsigned char parity; /* none, even, or odd */ + +} MGSL_PARAMS, *PMGSL_PARAMS; + +#define MICROGATE_VENDOR_ID 0x13c0 +#define SYNCLINK_DEVICE_ID 0x0010 +#define MGSL_MAX_SERIAL_NUMBER 30 + +/* +** device diagnostics status +*/ + +#define DiagStatus_OK 0 +#define DiagStatus_AddressFailure 1 +#define DiagStatus_AddressConflict 2 +#define DiagStatus_IrqFailure 3 +#define DiagStatus_IrqConflict 4 +#define DiagStatus_DmaFailure 5 +#define DiagStatus_DmaConflict 6 +#define DiagStatus_PciAdapterNotFound 7 +#define DiagStatus_CantAssignPciResources 8 +#define DiagStatus_CantAssignPciMemAddr 9 +#define DiagStatus_CantAssignPciIoAddr 10 +#define DiagStatus_CantAssignPciIrq 11 +#define DiagStatus_MemoryError 12 + +#define SerialSignal_DCD 0x01 /* Data Carrier Detect */ +#define SerialSignal_TXD 0x02 /* Transmit Data */ +#define SerialSignal_RI 0x04 /* Ring Indicator */ +#define SerialSignal_RXD 0x08 /* Receive Data */ +#define SerialSignal_CTS 0x10 /* Clear to Send */ +#define SerialSignal_RTS 0x20 /* Request to Send */ +#define SerialSignal_DSR 0x40 /* Data Set Ready */ +#define SerialSignal_DTR 0x80 /* Data Terminal Ready */ + + +/* + * Counters of the input lines (CTS, DSR, RI, CD) interrupts + */ +struct mgsl_icount { + __u32 cts, dsr, rng, dcd, tx, rx; + __u32 frame, parity, overrun, brk; + __u32 buf_overrun; + __u32 txok; + __u32 txunder; + __u32 txabort; + __u32 txtimeout; + __u32 rxshort; + __u32 rxlong; + __u32 rxabort; + __u32 rxover; + __u32 rxcrc; + __u32 rxok; + __u32 exithunt; + __u32 rxidle; +}; + + +#define DEBUG_LEVEL_DATA 1 +#define DEBUG_LEVEL_ERROR 2 +#define DEBUG_LEVEL_INFO 3 +#define DEBUG_LEVEL_BH 4 +#define DEBUG_LEVEL_ISR 5 + +/* +** Event bit flags for use with MgslWaitEvent +*/ + +#define MgslEvent_DsrActive 0x0001 +#define MgslEvent_DsrInactive 0x0002 +#define MgslEvent_Dsr 0x0003 +#define MgslEvent_CtsActive 0x0004 +#define MgslEvent_CtsInactive 0x0008 +#define MgslEvent_Cts 0x000c +#define MgslEvent_DcdActive 0x0010 +#define MgslEvent_DcdInactive 0x0020 +#define MgslEvent_Dcd 0x0030 +#define MgslEvent_RiActive 0x0040 +#define MgslEvent_RiInactive 0x0080 +#define MgslEvent_Ri 0x00c0 +#define MgslEvent_ExitHuntMode 0x0100 +#define MgslEvent_IdleReceived 0x0200 + +/* Private IOCTL codes: + * + * MGSL_IOCSPARAMS set MGSL_PARAMS structure values + * MGSL_IOCGPARAMS get current MGSL_PARAMS structure values + * MGSL_IOCSTXIDLE set current transmit idle mode + * MGSL_IOCGTXIDLE get current transmit idle mode + * MGSL_IOCTXENABLE enable or disable transmitter + * MGSL_IOCRXENABLE enable or disable receiver + * MGSL_IOCTXABORT abort transmitting frame (HDLC) + * MGSL_IOCGSTATS return current statistics + * MGSL_IOCWAITEVENT wait for specified event to occur + */ +#define MGSL_MAGIC_IOC 'm' +#define MGSL_IOCSPARAMS _IOW(MGSL_MAGIC_IOC,0,sizeof(MGSL_PARAMS)) +#define MGSL_IOCGPARAMS _IOR(MGSL_MAGIC_IOC,1,sizeof(MGSL_PARAMS)) +#define MGSL_IOCSTXIDLE _IO(MGSL_MAGIC_IOC,2) +#define MGSL_IOCGTXIDLE _IO(MGSL_MAGIC_IOC,3) +#define MGSL_IOCTXENABLE _IO(MGSL_MAGIC_IOC,4) +#define MGSL_IOCRXENABLE _IO(MGSL_MAGIC_IOC,5) +#define MGSL_IOCTXABORT _IO(MGSL_MAGIC_IOC,6) +#define MGSL_IOCGSTATS _IO(MGSL_MAGIC_IOC,7) +#define MGSL_IOCWAITEVENT _IO(MGSL_MAGIC_IOC,8) +#define MGSL_IOCCLRMODCOUNT _IO(MGSL_MAGIC_IOC,15) + +#endif /* _SYNCLINK_H_ */ diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 413864d40..db74f03be 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -56,9 +56,15 @@ enum CTL_PROC=4, /* Process info */ CTL_FS=5, /* Filesystems */ CTL_DEBUG=6, /* Debugging */ - CTL_DEV=7 /* Devices */ + CTL_DEV=7, /* Devices */ + CTL_BUS=8 /* Buses */ }; +/* CTL_BUS names: */ +enum +{ + BUS_ISA=1 /* ISA */ +}; /* CTL_KERN names: */ enum @@ -133,9 +139,17 @@ enum NET_IPV6=12, NET_X25=13, NET_TR=14, - NET_DECNET=15 + NET_DECNET=15, + NET_ECONET=16 }; +/* /proc/sys/bus/isa */ +enum +{ + BUS_ISA_MEM_BASE=1, + BUS_ISA_PORT_BASE=2, + BUS_ISA_PORT_SHIFT=3 +}; /* /proc/sys/net/core */ enum @@ -161,7 +175,8 @@ enum enum { NET_UNIX_DESTROY_DELAY=1, - NET_UNIX_DELETE_DELAY=2 + NET_UNIX_DELETE_DELAY=2, + NET_UNIX_MAX_DGRAM_QLEN=3, }; /* /proc/sys/net/ipv4 */ @@ -225,7 +240,8 @@ enum { NET_IPV4_ROUTE_REDIRECT_SILENCE=11, NET_IPV4_ROUTE_ERROR_COST=12, NET_IPV4_ROUTE_ERROR_BURST=13, - NET_IPV4_ROUTE_GC_ELASTICITY=14 + NET_IPV4_ROUTE_GC_ELASTICITY=14, + NET_IPV4_ROUTE_MTU_EXPIRES=15 }; enum @@ -265,7 +281,8 @@ enum { NET_IPV6_ROUTE_GC_MIN_INTERVAL=4, NET_IPV6_ROUTE_GC_TIMEOUT=5, NET_IPV6_ROUTE_GC_INTERVAL=6, - NET_IPV6_ROUTE_GC_ELASTICITY=7 + NET_IPV6_ROUTE_GC_ELASTICITY=7, + NET_IPV6_ROUTE_MTU_EXPIRES=8 }; enum { diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h index 547e5c2c1..49d9d24f1 100644 --- a/include/linux/sysv_fs.h +++ b/include/linux/sysv_fs.h @@ -367,7 +367,7 @@ sv_bread (struct super_block *sb, kdev_t dev, unsigned int block) * Function prototypes */ -extern int sysv_lookup(struct inode * dir, struct dentry * dentry); +extern struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry); extern int sysv_create(struct inode * dir, struct dentry * dentry, int mode); extern int sysv_mkdir(struct inode * dir, struct dentry * dentry, int mode); extern int sysv_rmdir(struct inode * dir, struct dentry * dentry); @@ -398,7 +398,6 @@ extern void sysv_write_super(struct super_block *); extern void sysv_read_inode(struct inode *); extern int sysv_notify_change(struct dentry *, struct iattr *); extern void sysv_write_inode(struct inode *); -extern void sysv_put_inode(struct inode *); extern int sysv_statfs(struct super_block *, struct statfs *, int); extern int sysv_sync_inode(struct inode *); extern int sysv_sync_file(struct file *, struct dentry *); diff --git a/include/linux/tqueue.h b/include/linux/tqueue.h index 4d59ee872..d886f7533 100644 --- a/include/linux/tqueue.h +++ b/include/linux/tqueue.h @@ -59,7 +59,7 @@ extern task_queue tq_timer, tq_immediate, tq_scheduler, tq_disk; * * struct tq_struct *my_bh = NULL; * struct tq_struct run_my_bh = { - * 0, 0, (void *)(void *) run_task_queue, &my_bh + * 0, 0, (void (*)(void *)) run_task_queue, &my_bh * }; * * To activate a bottom half on your list, use: diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h index 65d26195f..e36ceba9e 100644 --- a/include/linux/ufs_fs.h +++ b/include/linux/ufs_fs.h @@ -93,6 +93,7 @@ #define UFS_ST_OLD 0x00000000 #define UFS_ST_44BSD 0x00000100 #define UFS_ST_SUN 0x00000200 +#define UFS_ST_SUNx86 0x00000400 /*cylinder group encoding */ #define UFS_CG_MASK 0x00003000 /* mask for the following */ #define UFS_CG_OLD 0x00000000 @@ -110,12 +111,13 @@ #define UFS_MOUNT_ONERROR_UMOUNT 0x00000004 #define UFS_MOUNT_ONERROR_REPAIR 0x00000008 -#define UFS_MOUNT_UFSTYPE 0x000001F0 +#define UFS_MOUNT_UFSTYPE 0x000003F0 #define UFS_MOUNT_UFSTYPE_OLD 0x00000010 #define UFS_MOUNT_UFSTYPE_44BSD 0x00000020 #define UFS_MOUNT_UFSTYPE_SUN 0x00000040 -#define UFS_MOUNT_UFSTYPE_NEXT 0x00000080 +#define UFS_MOUNT_UFSTYPE_NEXTSTEP 0x00000080 #define UFS_MOUNT_UFSTYPE_OPENSTEP 0x00000100 +#define UFS_MOUNT_UFSTYPE_SUNx86 0x00000200 #define ufs_clear_opt(o,opt) o &= ~UFS_MOUNT_##opt #define ufs_set_opt(o,opt) o |= UFS_MOUNT_##opt @@ -203,7 +205,7 @@ #define UFS_MAXNAMLEN 255 #define UFS_MAXMNTLEN 512 #define UFS_MAXCSBUFS 31 -#define UFS_LINK_MAX EXT2_LINK_MAX +#define UFS_LINK_MAX 32000 /* * UFS_DIR_PAD defines the directory entries boundaries @@ -294,7 +296,14 @@ struct ufs_super_block { /* yet another configuration parameter */ __u32 fs_optim; /* optimization preference, see below */ /* these fields are derived from the hardware */ - __u32 fs_npsect; /* # sectors/track including spares */ + union { + struct { + __u32 fs_npsect; /* # sectors/track including spares */ + } fs_sun; + struct { + __s32 fs_state; /* file system state time stamp */ + } fs_sunx86; + } fs_u1; __u32 fs_interleave; /* hardware sector interleave */ __u32 fs_trackskew; /* sector 0 skew, per track */ /* a unique id for this filesystem (currently unused and unmaintained) */ @@ -319,11 +328,11 @@ struct ufs_super_block { /* this data must be re-computed after crashes */ struct ufs_csum fs_cstotal; /* cylinder summary information */ /* these fields are cleared at mount time */ - __u8 fs_fmod; /* super block modified flag */ - __u8 fs_clean; /* file system is clean flag */ - __u8 fs_ronly; /* mounted read-only flag */ - __u8 fs_flags; /* currently unused flag */ - __u8 fs_fsmnt[UFS_MAXMNTLEN]; /* name mounted on */ + __s8 fs_fmod; /* super block modified flag */ + __s8 fs_clean; /* file system is clean flag */ + __s8 fs_ronly; /* mounted read-only flag */ + __s8 fs_flags; /* currently unused flag */ + __s8 fs_fsmnt[UFS_MAXMNTLEN]; /* name mounted on */ /* these fields retain the current block allocation info */ __u32 fs_cgrotor; /* last cg searched */ __u32 fs_csp[UFS_MAXCSBUFS]; /* list of fs_cs info buffers */ @@ -340,6 +349,14 @@ struct ufs_super_block { __u32 fs_qfmask[2]; /* ~usb_fmask */ } fs_sun; struct { + __s32 fs_sparecon[53];/* reserved for future constants */ + __s32 fs_reclaim; + __s32 fs_sparecon2[1]; + __u32 fs_npsect; /* # sectors/track including spares */ + __u32 fs_qbmask[2]; /* ~usb_bmask */ + __u32 fs_qfmask[2]; /* ~usb_fmask */ + } fs_sunx86; + struct { __s32 fs_sparecon[50];/* reserved for future constants */ __s32 fs_contigsumsize;/* size of cluster summary array */ __s32 fs_maxsymlinklen;/* max length of an internal symlink */ @@ -349,7 +366,7 @@ struct ufs_super_block { __u32 fs_qfmask[2]; /* ~usb_fmask */ __s32 fs_state; /* file system state time stamp */ } fs_44; - } fs_u; + } fs_u2; __s32 fs_postblformat; /* format of positional layout tables */ __s32 fs_nrpos; /* number of rotational positions */ __s32 fs_postbloff; /* (__s16) rotation block list head */ @@ -523,7 +540,7 @@ extern struct buffer_head * ufs_getfrag (struct inode *, unsigned, int, int *); extern struct buffer_head * ufs_bread (struct inode *, unsigned, int, int *); /* namei.c */ -extern int ufs_lookup (struct inode *, struct dentry *); +extern struct dentry *ufs_lookup (struct inode *, struct dentry *); extern int ufs_mkdir(struct inode *, struct dentry *, int); extern int ufs_rmdir (struct inode *, struct dentry *); extern int ufs_unlink (struct inode *, struct dentry *); diff --git a/include/linux/ufs_fs_sb.h b/include/linux/ufs_fs_sb.h index 6ad0e0d96..2fc49e99f 100644 --- a/include/linux/ufs_fs_sb.h +++ b/include/linux/ufs_fs_sb.h @@ -116,8 +116,6 @@ struct ufs_sb_private_info { struct ufs_sb_info { struct ufs_sb_private_info * s_uspi; struct ufs_csum * s_csp[UFS_MAXCSBUFS]; - int s_rename_lock; - struct wait_queue * s_rename_wait; unsigned s_swab; unsigned s_flags; struct buffer_head ** s_ucg; @@ -167,7 +165,14 @@ struct ufs_super_block_first { __u32 fs_inopb; __u32 fs_nspf; __u32 fs_optim; - __u32 fs_npsect; + union { + struct { + __u32 fs_npsect; + } fs_sun; + struct { + __s32 fs_state; + } fs_sunx86; + } fs_u1; __u32 fs_interleave; __u32 fs_trackskew; __u32 fs_id[2]; @@ -182,16 +187,16 @@ struct ufs_super_block_first { __u32 fs_ipg; __u32 fs_fpg; struct ufs_csum fs_cstotal; - __u8 fs_fmod; - __u8 fs_clean; - __u8 fs_ronly; - __u8 fs_flags; - __u8 fs_fsmnt[UFS_MAXMNTLEN - 212]; + __s8 fs_fmod; + __s8 fs_clean; + __s8 fs_ronly; + __s8 fs_flags; + __s8 fs_fsmnt[UFS_MAXMNTLEN - 212]; }; struct ufs_super_block_second { - __u8 fs_fsmnt[212]; + __s8 fs_fsmnt[212]; __u32 fs_cgrotor; __u32 fs_csp[UFS_MAXCSBUFS]; __u32 fs_maxcluster; @@ -211,6 +216,14 @@ struct ufs_super_block_third { __u32 fs_qfmask[2]; /* ~usb_fmask */ } fs_sun; struct { + __s32 fs_sparecon[53];/* reserved for future constants */ + __s32 fs_reclaim; + __s32 fs_sparecon2[1]; + __u32 fs_npsect; /* # sectors/track including spares */ + __u32 fs_qbmask[2]; /* ~usb_bmask */ + __u32 fs_qfmask[2]; /* ~usb_fmask */ + } fs_sunx86; + struct { __s32 fs_sparecon[50];/* reserved for future constants */ __s32 fs_contigsumsize;/* size of cluster summary array */ __s32 fs_maxsymlinklen;/* max length of an internal symlink */ @@ -220,7 +233,7 @@ struct ufs_super_block_third { __u32 fs_qfmask[2]; /* ~usb_fmask */ __s32 fs_state; /* file system state time stamp */ } fs_44; - } fs_u; + } fs_u2; __s32 fs_postblformat; __s32 fs_nrpos; __s32 fs_postbloff; diff --git a/include/linux/umsdos_fs.p b/include/linux/umsdos_fs.p index 1bf76e560..de436f0e8 100644 --- a/include/linux/umsdos_fs.p +++ b/include/linux/umsdos_fs.p @@ -9,9 +9,10 @@ int dummy_dir_read ( struct file *filp, char * umsdos_d_path(struct dentry *, char *, int); void umsdos_lookup_patch_new(struct dentry *, struct umsdos_info *); int umsdos_is_pseudodos (struct inode *dir, struct dentry *dentry); -int umsdos_lookup_x ( struct inode *dir, struct dentry *dentry, int nopseudo); -int UMSDOS_lookup(struct inode *, struct dentry *); +struct dentry *umsdos_lookup_x ( struct inode *dir, struct dentry *dentry, int nopseudo); +struct dentry *UMSDOS_lookup(struct inode *, struct dentry *); struct dentry *umsdos_lookup_dentry(struct dentry *, char *, int, int); +struct dentry *umsdos_covered(struct dentry *, char *, int); struct dentry *umsdos_solve_hlink (struct dentry *hlink); @@ -105,8 +106,8 @@ int UMSDOS_rename (struct inode *old_dir, struct dentry *new_dentry); /* rdir.c 22/03/95 03.31.42 */ -int umsdos_rlookup_x (struct inode *dir, struct dentry *dentry, int nopseudo); -int UMSDOS_rlookup (struct inode *dir, struct dentry *dentry); +struct dentry *umsdos_rlookup_x (struct inode *dir, struct dentry *dentry, int nopseudo); +struct dentry *UMSDOS_rlookup (struct inode *dir, struct dentry *dentry); /* symlink.c 23/01/95 03.38.30 */ diff --git a/include/linux/videodev.h b/include/linux/videodev.h index a41428d20..119b60eec 100644 --- a/include/linux/videodev.h +++ b/include/linux/videodev.h @@ -95,6 +95,8 @@ struct video_tuner #define VIDEO_TUNER_LOW 8 /* Uses KHz not MHz */ #define VIDEO_TUNER_NORM 16 /* Tuner can set norm */ #define VIDEO_TUNER_STEREO_ON 128 /* Tuner is seeing stereo */ +#define VIDEO_TUNER_RDS_ON 256 /* Tuner is seeing an RDS datastream */ +#define VIDEO_TUNER_MBS_ON 512 /* Tuner is seeing an MBS datastream */ __u16 mode; /* PAL/NTSC/SECAM/OTHER */ #define VIDEO_MODE_PAL 0 #define VIDEO_MODE_NTSC 1 @@ -273,7 +275,9 @@ struct video_unit #define VID_HARDWARE_PLANB 16 /* PowerMac motherboard video-in */ #define VID_HARDWARE_BROADWAY 17 /* Broadway project */ #define VID_HARDWARE_GEMTEK 18 -#define VID_HARDWARE_VINO 20 /* SGI Indy Vino */ +#define VID_HARDWARE_TYPHOON 19 +#define VID_HARDWARE_VINO 20 /* Reserved for SGI Indy Vino */ +#define VID_HARDWARE_CADET 21 /* Cadet radio */ /* * Initialiser list diff --git a/include/linux/vt_buffer.h b/include/linux/vt_buffer.h index df0ee6ef1..ca1ec519d 100644 --- a/include/linux/vt_buffer.h +++ b/include/linux/vt_buffer.h @@ -41,7 +41,7 @@ extern inline void scr_memsetw(u16 *s, u16 c, unsigned int count) #endif #ifndef VT_BUF_HAVE_MEMCPYW -extern inline void scr_memcpyw(u16 *d, u16 *s, unsigned int count) +extern inline void scr_memcpyw(u16 *d, const u16 *s, unsigned int count) { count /= 2; while (count--) @@ -50,7 +50,7 @@ extern inline void scr_memcpyw(u16 *d, u16 *s, unsigned int count) #endif #ifndef VT_BUF_HAVE_MEMMOVEW -extern inline void scr_memmovew(u16 *d, u16 *s, unsigned int count) +extern inline void scr_memmovew(u16 *d, const u16 *s, unsigned int count) { if (d < s) scr_memcpyw(d, s, count); @@ -65,14 +65,14 @@ extern inline void scr_memmovew(u16 *d, u16 *s, unsigned int count) #endif #ifndef VT_BUF_HAVE_MEMCPYF -extern inline void scr_memcpyw_from(u16 *d, u16 *s, unsigned int count) +extern inline void scr_memcpyw_from(u16 *d, const u16 *s, unsigned int count) { count /= 2; while (count--) *d++ = scr_readw(s++); } -extern inline void scr_memcpyw_to(u16 *d, u16 *s, unsigned int count) +extern inline void scr_memcpyw_to(u16 *d, const u16 *s, unsigned int count) { count /= 2; while (count--) diff --git a/include/linux/wireless.h b/include/linux/wireless.h index 0c2e9fb2a..d3c59fff5 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h @@ -1,7 +1,7 @@ /* * This file define a set of standard wireless extensions * - * Version : 4 12.2.97 + * Version : 7 23.4.99 * * Authors : Jean Tourrilhes - HPLB - <jt@hplb.hpl.hp.com> */ @@ -63,7 +63,7 @@ * (there is some stuff that will be added in the future...) * I just plan to increment with each new version. */ -#define WIRELESS_EXT 5 +#define WIRELESS_EXT 6 /* * Changes : @@ -82,6 +82,14 @@ * -------- * - Missing encoding definitions in range * - Access points stuff + * + * V5 to V6 + * -------- + * - 802.11 support (ESSID ioctls) + * + * V6 to V7 + * -------- + * - define IW_ESSID_MAX_SIZE and IW_MAX_AP */ /* -------------------------- IOCTL LIST -------------------------- */ @@ -113,11 +121,20 @@ #define SIOCGIWAP 0x8B15 /* get access point hardware addresses */ #define SIOCGIWAPLIST 0x8B17 /* get list of access point in range */ +/* 802.11 specific support */ +#define SIOCSIWESSID 0x8B1A /* set ESSID (network name) */ +#define SIOCGIWESSID 0x8B1B /* get ESSID */ +/* As the ESSID is a string up to 32 bytes long, it doesn't fit within the + * 'iwreq' structure, so we need to use the 'data' member to point to a + * string in user space, like it is done for RANGE... + * The "flags" member indicate if the ESSID is active or not. + */ + /* ------------------------- IOCTL STUFF ------------------------- */ /* The first and the last (range) */ #define SIOCIWFIRST 0x8B00 -#define SIOCIWLAST 0x8B17 +#define SIOCIWLAST 0x8B1B /* Even : get (world access), odd : set (root access) */ #define IW_IS_SET(cmd) (!((cmd) & 0x1)) @@ -157,6 +174,13 @@ /* Maximum of address that you may set with SPY */ #define IW_MAX_SPY 8 +/* Maximum of address that you may get in the + list of access points in range */ +#define IW_MAX_AP 8 + +/* Maximum size of the ESSID string */ +#define IW_ESSID_MAX_SIZE 32 + /****************************** TYPES ******************************/ /* --------------------------- SUBTYPES --------------------------- */ @@ -266,7 +290,7 @@ struct iwreq caddr_t pointer; /* Pointer to the data * (in user space) */ __u16 length; /* fields or byte size */ - __u16 flags; /* Unused */ + __u16 flags; /* Optional params */ } data; } u; }; diff --git a/include/linux/zorro.h b/include/linux/zorro.h index d2b68111f..9ec9ca719 100644 --- a/include/linux/zorro.h +++ b/include/linux/zorro.h @@ -301,7 +301,7 @@ typedef __u32 zorro_id; #define ZORRO_PROD_BSC_MULTIFACE_I ZORRO_ID(BSC_ALFADATA_3, 0x10, 0) #define ZORRO_PROD_BSC_MULTIFACE_II ZORRO_ID(BSC_ALFADATA_3, 0x11, 0) #define ZORRO_PROD_BSC_MULTIFACE_III ZORRO_ID(BSC_ALFADATA_3, 0x12, 0) -#define ZORRO_PROD_BSC_FRAMEBUFFER ZORRO_ID(BSC_ALFADATA_3, 0x20, 0) +#define ZORRO_PROD_BSC_FRAMEMASTER_II ZORRO_ID(BSC_ALFADATA_3, 0x20, 0) #define ZORRO_PROD_BSC_GRAFFITI_RAM ZORRO_ID(BSC_ALFADATA_3, 0x21, 0) #define ZORRO_PROD_BSC_GRAFFITI_REG ZORRO_ID(BSC_ALFADATA_3, 0x22, 0) #define ZORRO_PROD_BSC_ISDN_MASTERCARD ZORRO_ID(BSC_ALFADATA_3, 0x40, 0) |