#!/bin/sh -x
# this is part 188 of a 197 - part archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file patch-2.4.10 continued
if test ! -r _shar_seq_.tmp; then
echo 'Please unpack part 1 first!'
exit 1
fi
(read Scheck
if test "$Scheck" != 188; then
echo "Please unpack part $Scheck next!"
exit 1
else
exit 0
fi
) < _shar_seq_.tmp || exit 1
if test ! -f _shar_wnt_.tmp; then
echo 'x - still skipping patch-2.4.10'
else
echo 'x - continuing with patch-2.4.10'
sed 's/^X//' << 'SHAR_EOF' >> 'patch-2.4.10' &&
X
X extern mdk_rdev_t * find_rdev(mddev_t * mddev, kdev_t dev);
X extern mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr);
+extern mdp_disk_t *get_spare(mddev_t *mddev);
X
X /*
X * iterates through some rdev ringlist. It's safe to remove the
diff -u --recursive --new-file v2.4.9/linux/include/linux/raid/md_u.h linux/include/linux/raid/md_u.h
--- v2.4.9/linux/include/linux/raid/md_u.h Mon Jan 29 13:16:00 2001
+++ linux/include/linux/raid/md_u.h Fri Sep 14 14:21:51 2001
@@ -35,6 +35,7 @@
X #define PROTECT_ARRAY _IO (MD_MAJOR, 0x27)
X #define HOT_ADD_DISK _IO (MD_MAJOR, 0x28)
X #define SET_DISK_FAULTY _IO (MD_MAJOR, 0x29)
+#define HOT_GENERATE_ERROR _IO (MD_MAJOR, 0x2a)
X
X /* usage */
X #define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t)
diff -u --recursive --new-file v2.4.9/linux/include/linux/raid/multipath.h linux/include/linux/raid/multipath.h
--- v2.4.9/linux/include/linux/raid/multipath.h Wed Dec 31 16:00:00 1969
+++ linux/include/linux/raid/multipath.h Fri Sep 14 14:22:18 2001
@@ -0,0 +1,87 @@
+#ifndef _MULTIPATH_H
+#define _MULTIPATH_H
+
+#include <linux/raid/md.h>
+
+struct multipath_info {
+ int number;
+ int raid_disk;
+ kdev_t dev;
+ int sect_limit;
+ int head_position;
+
+ /*
+ * State bits:
+ */
+ int operational;
+ int write_only;
+ int spare;
+
+ int used_slot;
+};
+
+struct multipath_private_data {
+ mddev_t *mddev;
+ struct multipath_info multipaths[MD_SB_DISKS];
+ int nr_disks;
+ int raid_disks;
+ int working_disks;
+ mdk_thread_t *thread;
+ struct multipath_info *spare;
+ md_spinlock_t device_lock;
+
+ /* buffer pool */
+ /* buffer_heads that we have pre-allocated have b_pprev -> &freebh
+ * and are linked into a stack using b_next
+ * multipath_bh that are pre-allocated have MPBH_PreAlloc set.
+ * All these variable are protected by device_lock
+ */
+ struct buffer_head *freebh;
+ int freebh_cnt; /* how many are on the list */
+ struct multipath_bh *freer1;
+ struct multipath_bh *freebuf; /* each bh_req has a page allocated */
+ md_wait_queue_head_t wait_buffer;
+
+ /* for use when syncing multipaths: */
+ unsigned long start_active, start_ready,
+ start_pending, start_future;
+ int cnt_done, cnt_active, cnt_ready,
+ cnt_pending, cnt_future;
+ int phase;
+ int window;
+ md_wait_queue_head_t wait_done;
+ md_wait_queue_head_t wait_ready;
+ md_spinlock_t segment_lock;
+};
+
+typedef struct multipath_private_data multipath_conf_t;
+
+/*
+ * this is the only point in the RAID code where we violate
+ * C type safety. mddev->private is an 'opaque' pointer.
+ */
+#define mddev_to_conf(mddev) ((multipath_conf_t *) mddev->private)
+
+/*
+ * this is our 'private' 'collective' MULTIPATH buffer head.
+ * it contains information about what kind of IO operations were started
+ * for this MULTIPATH operation, and about their status:
+ */
+
+struct multipath_bh {
+ atomic_t remaining; /* 'have we finished' count,
+ * used from IRQ handlers
+ */
+ int cmd;
+ unsigned long state;
+ mddev_t *mddev;
+ struct buffer_head *master_bh;
+ struct buffer_head *multipath_bh_list;
+ struct buffer_head bh_req;
+ struct multipath_bh *next_r1; /* next for retry or in free list */
+};
+/* bits for multipath_bh.state */
+#define MPBH_Uptodate 1
+#define MPBH_SyncPhase 2
+#define MPBH_PreAlloc 3 /* this was pre-allocated, add to free list */
+#endif
diff -u --recursive --new-file v2.4.9/linux/include/linux/rbtree.h linux/include/linux/rbtree.h
--- v2.4.9/linux/include/linux/rbtree.h Wed Dec 31 16:00:00 1969
+++ linux/include/linux/rbtree.h Sun Sep 23 10:31:01 2001
@@ -0,0 +1,133 @@
+/*
+ Red Black Trees
+ (C) 1999 Andrea Arcangeli <and...@suse.de>
+
+ 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.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ linux/include/linux/rbtree.h
+
+ To use rbtrees you'll have to implement your own insert and search cores.
+ This will avoid us to use callbacks and to drop drammatically performances.
+ I know it's not the cleaner way, but in C (not in C++) to get
+ performances and genericity...
+
+ Some example of insert and search follows here. The search is a plain
+ normal search over an ordered tree. The insert instead must be implemented
+ int two steps: as first thing the code must insert the element in
+ order as a red leaf in the tree, then the support library function
+ rb_insert_color() must be called. Such function will do the
+ not trivial work to rebalance the rbtree if necessary.
+
+-----------------------------------------------------------------------
+static inline struct page * rb_search_page_cache(struct inode * inode,
+ unsigned long offset)
+{
+ rb_node_t * n = inode->i_rb_page_cache.rb_node;
+ struct page * page;
+
+ while (n)
+ {
+ page = rb_entry(n, struct page, rb_page_cache);
+
+ if (offset < page->offset)
+ n = n->rb_left;
+ else if (offset > page->offset)
+ n = n->rb_right;
+ else
+ return page;
+ }
+ return NULL;
+}
+
+static inline struct page * __rb_insert_page_cache(struct inode * inode,
+ unsigned long offset,
+ rb_node_t * node)
+{
+ rb_node_t ** p = &inode->i_rb_page_cache.rb_node;
+ rb_node_t * parent = NULL;
+ struct page * page;
+
+ while (*p)
+ {
+ parent = *p;
+ page = rb_entry(parent, struct page, rb_page_cache);
+
+ if (offset < page->offset)
+ p = &(*p)->rb_left;
+ else if (offset > page->offset)
+ p = &(*p)->rb_right;
+ else
+ return page;
+ }
+
+ rb_link_node(node, parent, p);
+
+ return NULL;
+}
+
+static inline struct page * rb_insert_page_cache(struct inode * inode,
+ unsigned long offset,
+ rb_node_t * node)
+{
+ struct page * ret;
+ if ((ret = __rb_insert_page_cache(inode, offset, node)))
+ goto out;
+ rb_insert_color(node, &inode->i_rb_page_cache);
+ out:
+ return ret;
+}
+-----------------------------------------------------------------------
+*/
+
+#ifndef _LINUX_RBTREE_H
+#define _LINUX_RBTREE_H
+
+#include <linux/kernel.h>
+#include <linux/stddef.h>
+
+typedef struct rb_node_s
+{
+ struct rb_node_s * rb_parent;
+ int rb_color;
+#define RB_RED 0
+#define RB_BLACK 1
+ struct rb_node_s * rb_right;
+ struct rb_node_s * rb_left;
+}
+rb_node_t;
+
+typedef struct rb_root_s
+{
+ struct rb_node_s * rb_node;
+}
+rb_root_t;
+
+#define RB_ROOT (rb_root_t) { NULL, }
+#define rb_entry(ptr, type, member) \
+ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+
+extern void rb_insert_color(rb_node_t *, rb_root_t *);
+extern void rb_erase(rb_node_t *, rb_root_t *);
+
+static inline void rb_link_node(rb_node_t * node, rb_node_t * parent, rb_node_t ** rb_link)
+{
+ node->rb_parent = parent;
+ node->rb_color = RB_RED;
+ node->rb_left = node->rb_right = NULL;
+
+ *rb_link = node;
+}
+
+#endif /* _LINUX_RBTREE_H */
diff -u --recursive --new-file v2.4.9/linux/include/linux/reiserfs_fs.h linux/include/linux/reiserfs_fs.h
--- v2.4.9/linux/include/linux/reiserfs_fs.h Sun Aug 12 13:28:01 2001
+++ linux/include/linux/reiserfs_fs.h Sat Sep 8 12:05:32 2001
@@ -1753,17 +1753,6 @@
X int n_max_nr_buffers_to_return);
X */
X
-#ifndef REISERFS_FSCK
-
-//inline int is_left_mergeable (struct item_head * ih, unsigned long bsize);
-
-#else
-
-int is_left_mergeable (struct super_block * s, struct path * path);
-int is_right_mergeable (struct super_block * s, struct path * path);
-int are_items_mergeable (struct item_head * left, struct item_head * right, int bsize);
-
-#endif
X void padd_item (char * item, int total_length, int length);
X
X
diff -u --recursive --new-file v2.4.9/linux/include/linux/sched.h linux/include/linux/sched.h
--- v2.4.9/linux/include/linux/sched.h Tue Aug 7 12:48:43 2001
+++ linux/include/linux/sched.h Sun Sep 23 10:31:02 2001
@@ -7,12 +7,12 @@
X
X #include <linux/config.h>
X #include <linux/binfmts.h>
-#include <linux/personality.h>
X #include <linux/threads.h>
X #include <linux/kernel.h>
X #include <linux/types.h>
X #include <linux/times.h>
X #include <linux/timex.h>
+#include <linux/rbtree.h>
X
X #include <asm/system.h>
X #include <asm/semaphore.h>
@@ -27,6 +27,8 @@
X #include <linux/securebits.h>
X #include <linux/fs_struct.h>
X
+struct exec_domain;
+
X /*
X * cloning flags:
X */
@@ -199,12 +201,9 @@
X /* Maximum number of active map areas.. This is a random (large) number */
X #define MAX_MAP_COUNT (65536)
X
-/* Number of map areas at which the AVL tree is activated. This is arbitrary. */
-#define AVL_MIN_MAP_COUNT 32
-
X struct mm_struct {
X struct vm_area_struct * mmap; /* list of VMAs */
- struct vm_area_struct * mmap_avl; /* tree of VMAs */
+ rb_root_t mm_rb;
X struct vm_area_struct * mmap_cache; /* last find_vma result */
X pgd_t * pgd;
X atomic_t mm_users; /* How many users with user space? */
@@ -236,13 +235,10 @@
X
X #define INIT_MM(name) \
X { \
- mmap: &init_mmap, \
- mmap_avl: NULL, \
- mmap_cache: NULL, \
+ mm_rb: RB_ROOT, \
X pgd: swapper_pg_dir, \
X mm_users: ATOMIC_INIT(2), \
X mm_count: ATOMIC_INIT(1), \
- map_count: 1, \
X mmap_sem: __RWSEM_INITIALIZER(name.mmap_sem), \
X page_table_lock: SPIN_LOCK_UNLOCKED, \
X mmlist: LIST_HEAD_INIT(name.mmlist), \
@@ -319,6 +315,8 @@
X
X struct task_struct *next_task, *prev_task;
X struct mm_struct *active_mm;
+ struct list_head local_pages;
+ unsigned int allocation_order, nr_local_pages;
X
X /* task state */
X struct linux_binfmt *binfmt;
@@ -415,6 +413,7 @@
X #define PF_DUMPCORE 0x00000200 /* dumped core */
X #define PF_SIGNALED 0x00000400 /* killed by a signal */
X #define PF_MEMALLOC 0x00000800 /* Allocating memory */
+#define PF_FREE_PAGES 0x00002000 /* per process page freeing */
X
X #define PF_USEDFPU 0x00100000 /* task used FPU this quantum (SMP) */
X
@@ -426,6 +425,7 @@
X #define PT_TRACESYS 0x00000002
X #define PT_DTRACE 0x00000004 /* delayed trace (used on m68k, i386) */
X #define PT_TRACESYSGOOD 0x00000008
+#define PT_PTRACE_CAP 0x00000010 /* ptracer can follow suid-exec */
X
X /*
X * Limit the stack by to some sane default: root can always
@@ -437,6 +437,12 @@
X #define MAX_COUNTER (20*HZ/100)
X #define DEF_NICE (0)
X
+
+/*
+ * The default (Linux) execution domain.
+ */
+extern struct exec_domain default_exec_domain;
+
X /*
X * INIT_TASK is used to set up the first task table, touch at
X * your own risk!. Base=0, limit=0x1fffff (=2MB)
@@ -749,6 +755,7 @@
X extern void exit_files(struct task_struct *);
X extern void exit_sighand(struct task_struct *);
X
+extern void reparent_to_init(void);
X extern void daemonize(void);
X
X extern int do_execve(char *, char **, char **, struct pt_regs *);
diff -u --recursive --new-file v2.4.9/linux/include/linux/skbuff.h linux/include/linux/skbuff.h
--- v2.4.9/linux/include/linux/skbuff.h Tue Aug 7 12:48:55 2001
+++ linux/include/linux/skbuff.h Sun Sep 23 10:31:19 2001
@@ -1082,7 +1082,7 @@
X /**
X * skb_linearize - convert paged skb to linear one
X * @skb: buffer to linarize
- * @gfp_mask: allocation mode
+ * @gfp: allocation mode
X *
X * If there is no free memory -ENOMEM is returned, otherwise zero
X * is returned and the old skb data released. */
diff -u --recursive --new-file v2.4.9/linux/include/linux/slab.h linux/include/linux/slab.h
--- v2.4.9/linux/include/linux/slab.h Tue Aug 7 12:48:43 2001
+++ linux/include/linux/slab.h Sun Sep 23 10:31:06 2001
@@ -17,13 +17,14 @@
X /* flags for kmem_cache_alloc() */
X #define SLAB_NOFS GFP_NOFS
X #define SLAB_NOIO GFP_NOIO
+#define SLAB_NOHIGHIO GFP_NOHIGHIO
X #define SLAB_ATOMIC GFP_ATOMIC
X #define SLAB_USER GFP_USER
X #define SLAB_KERNEL GFP_KERNEL
X #define SLAB_NFS GFP_NFS
X #define SLAB_DMA GFP_DMA
X
-#define SLAB_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS)
+#define SLAB_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_HIGHIO|__GFP_FS)
X #define SLAB_NO_GROW 0x00001000UL /* don't grow a cache */
X
X /* flags to pass to kmem_cache_create().
@@ -59,7 +60,7 @@
X extern void *kmalloc(size_t, int);
X extern void kfree(const void *);
X
-extern void kmem_cache_reap(int);
+extern int FASTCALL(kmem_cache_reap(int));
X extern int slabinfo_read_proc(char *page, char **start, off_t off,
X int count, int *eof, void *data);
X extern int slabinfo_write_proc(struct file *file, const char *buffer,
diff -u --recursive --new-file v2.4.9/linux/include/linux/sonypi.h linux/include/linux/sonypi.h
--- v2.4.9/linux/include/linux/sonypi.h Wed Jul 25 17:10:26 2001
+++ linux/include/linux/sonypi.h Thu Sep 20 20:57:25 2001
@@ -67,6 +67,10 @@
X #define SONYPI_EVENT_FNKEY_S 29
X #define SONYPI_EVENT_FNKEY_B 30
X #define SONYPI_EVENT_BLUETOOTH_PRESSED 31
+#define SONYPI_EVENT_PKEY_P1 32
+#define SONYPI_EVENT_PKEY_P2 33
+#define SONYPI_EVENT_PKEY_P3 34
+
X
X /* brightness etc. ioctls */
X #define SONYPI_IOCGBRT _IOR('v', 0, __u8)
diff -u --recursive --new-file v2.4.9/linux/include/linux/soundcard.h linux/include/linux/soundcard.h
--- v2.4.9/linux/include/linux/soundcard.h Sat Nov 11 19:02:39 2000
+++ linux/include/linux/soundcard.h Sun Sep 9 10:52:35 2001
@@ -623,6 +623,17 @@
X # define DSP_BIND_I2S 0x00000080
X # define DSP_BIND_SPDIF 0x00000100
X
+#define SNDCTL_DSP_SETSPDIF _SIOW ('P', 66, int)
+#define SNDCTL_DSP_GETSPDIF _SIOR ('P', 67, int)
+# define SPDIF_PRO 0x0001
+# define SPDIF_N_AUD 0x0002
+# define SPDIF_COPY 0x0004
+# define SPDIF_PRE 0x0008
+# define SPDIF_CC 0x07f0
+# define SPDIF_L 0x0800
+# define SPDIF_DRS 0x4000
+# define SPDIF_V 0x8000
+
X /*
X * Application's profile defines the way how playback underrun situations should be handled.
X *
diff -u --recursive --new-file v2.4.9/linux/include/linux/sunrpc/xdr.h linux/include/linux/sunrpc/xdr.h
--- v2.4.9/linux/include/linux/sunrpc/xdr.h Tue Aug 7 12:49:29 2001
+++ linux/include/linux/sunrpc/xdr.h Sun Sep 23 10:32:13 2001
@@ -34,27 +34,27 @@
X typedef int (*kxdrproc_t)(void *rqstp, u32 *data, void *obj);
X
X /*
- * These variables contain pre-xdr'ed values for faster operation.
- * FIXME: should be replaced by macros for big-endian machines.
+ * pre-xdr'ed macros.
X */
-extern u32 xdr_zero, xdr_one, xdr_two;
X
-extern u32 rpc_success,
- rpc_prog_unavail,
- rpc_prog_mismatch,
- rpc_proc_unavail,
- rpc_garbage_args,
- rpc_system_err;
+#define xdr_zero __constant_htonl(0)
+#define xdr_one __constant_htonl(1)
+#define xdr_two __constant_htonl(2)
X
-extern u32 rpc_auth_ok,
- rpc_autherr_badcred,
- rpc_autherr_rejectedcred,
- rpc_autherr_badverf,
- rpc_autherr_rejectedverf,
- rpc_autherr_tooweak,
- rpc_autherr_dropit;
+#define rpc_success __constant_htonl(RPC_SUCCESS)
+#define rpc_prog_unavail __constant_htonl(RPC_PROG_UNAVAIL)
+#define rpc_prog_mismatch __constant_htonl(RPC_PROG_MISMATCH)
+#define rpc_proc_unavail __constant_htonl(RPC_PROC_UNAVAIL)
+#define rpc_garbage_args __constant_htonl(RPC_GARBAGE_ARGS)
+#define rpc_system_err __constant_htonl(RPC_SYSTEM_ERR)
+
+#define rpc_auth_ok __constant_htonl(RPC_AUTH_OK)
+#define rpc_autherr_badcred __constant_htonl(RPC_AUTH_BADCRED)
+#define rpc_autherr_rejectedcred __constant_htonl(RPC_AUTH_REJECTEDCRED)
+#define rpc_autherr_badverf __constant_htonl(RPC_AUTH_BADVERF)
+#define rpc_autherr_rejectedverf __constant_htonl(RPC_AUTH_REJECTEDVERF)
+#define rpc_autherr_tooweak __constant_htonl(RPC_AUTH_TOOWEAK)
X
-void xdr_init(void);
X
X /*
X * Miscellaneous XDR helper functions
@@ -62,6 +62,7 @@
X u32 * xdr_encode_array(u32 *p, const char *s, unsigned int len);
X u32 * xdr_encode_string(u32 *p, const char *s);
X u32 * xdr_decode_string(u32 *p, char **sp, int *lenp, int maxlen);
+u32 * xdr_decode_string_inplace(u32 *p, char **sp, int *lenp, int maxlen);
X u32 * xdr_encode_netobj(u32 *p, const struct xdr_netobj *);
X u32 * xdr_decode_netobj(u32 *p, struct xdr_netobj *);
X u32 * xdr_decode_netobj_fixed(u32 *p, void *obj, unsigned int len);
diff -u --recursive --new-file v2.4.9/linux/include/linux/sunrpc/xprt.h linux/include/linux/sunrpc/xprt.h
--- v2.4.9/linux/include/linux/sunrpc/xprt.h Tue Aug 7 12:49:30 2001
+++ linux/include/linux/sunrpc/xprt.h Sun Sep 23 10:32:19 2001
@@ -135,15 +135,13 @@
X struct rpc_wait_queue sending; /* requests waiting to send */
X struct rpc_wait_queue pending; /* requests in flight */
X struct rpc_wait_queue backlog; /* waiting for slot */
- struct rpc_wait_queue reconn; /* waiting for reconnect */
X struct rpc_rqst * free; /* free slots */
X struct rpc_rqst slot[RPC_MAXREQS];
X unsigned long sockstate; /* Socket state */
X unsigned char shutdown : 1, /* being shut down */
X nocong : 1, /* no congestion control */
X stream : 1, /* TCP */
- tcp_more : 1, /* more record fragments */
- connecting : 1; /* being reconnected */
+ tcp_more : 1; /* more record fragments */
X
X /*
X * State of TCP reply receive stuff
@@ -158,6 +156,8 @@
X /*
X * Send stuff
X */
+ spinlock_t sock_lock; /* lock socket info */
+ spinlock_t xprt_lock; /* lock xprt info */
X struct rpc_task * snd_task; /* Task blocked in send */
X
X
@@ -185,10 +185,9 @@
X void xprt_release(struct rpc_task *);
X void xprt_reconnect(struct rpc_task *);
X int xprt_clear_backlog(struct rpc_xprt *);
+int xprt_tcp_pending(void);
X void __rpciod_tcp_dispatcher(void);
X
-extern struct list_head rpc_xprt_pending;
-
X #define XPRT_WSPACE 0
X #define XPRT_CONNECT 1
X
@@ -200,12 +199,6 @@
X #define xprt_set_connected(xp) (set_bit(XPRT_CONNECT, &(xp)->sockstate))
X #define xprt_test_and_set_connected(xp) (test_and_set_bit(XPRT_CONNECT, &(xp)->sockstate))
X #define xprt_clear_connected(xp) (clear_bit(XPRT_CONNECT, &(xp)->sockstate))
-
-static inline
-int xprt_tcp_pending(void)
-{
- return !list_empty(&rpc_xprt_pending);
-}
X
X static inline
X void rpciod_tcp_dispatcher(void)
diff -u --recursive --new-file v2.4.9/linux/include/linux/swap.h linux/include/linux/swap.h
--- v2.4.9/linux/include/linux/swap.h Mon Aug 27 12:41:48 2001
+++ linux/include/linux/swap.h Sun Sep 23 10:31:02 2001
@@ -8,7 +8,7 @@
X #define SWAP_FLAG_PRIO_MASK 0x7fff
X #define SWAP_FLAG_PRIO_SHIFT 0
X
-#define MAX_SWAPFILES 8
+#define MAX_SWAPFILES 32
X
X /*
X * Magic header for a swap area. The first part of the union is
@@ -80,12 +80,10 @@
X
X extern int nr_swap_pages;
X extern unsigned int nr_free_pages(void);
-extern unsigned int nr_inactive_clean_pages(void);
X extern unsigned int nr_free_buffer_pages(void);
X extern int nr_active_pages;
-extern int nr_inactive_dirty_pages;
+extern int nr_inactive_pages;
X extern atomic_t nr_async_pages;
-extern struct address_space swapper_space;
X extern atomic_t page_cache_size;
X extern atomic_t buffermem_pages;
X extern spinlock_t pagecache_lock;
@@ -99,26 +97,20 @@
X struct zone_t;
X
X /* linux/mm/swap.c */
-extern int memory_pressure;
-extern void deactivate_page(struct page *);
-extern void deactivate_page_nolock(struct page *);
-extern void activate_page(struct page *);
-extern void activate_page_nolock(struct page *);
-extern void lru_cache_add(struct page *);
-extern void __lru_cache_del(struct page *);
-extern void lru_cache_del(struct page *);
-extern void recalculate_vm_stats(void);
+extern void FASTCALL(lru_cache_add(struct page *));
+extern void FASTCALL(__lru_cache_del(struct page *));
+extern void FASTCALL(lru_cache_del(struct page *));
+
+extern void FASTCALL(deactivate_page(struct page *));
+extern void FASTCALL(deactivate_page_nolock(struct page *));
+extern void FASTCALL(activate_page(struct page *));
+extern void FASTCALL(activate_page_nolock(struct page *));
+
X extern void swap_setup(void);
X
X /* linux/mm/vmscan.c */
-extern struct page * reclaim_page(zone_t *);
X extern wait_queue_head_t kswapd_wait;
-extern wait_queue_head_t kreclaimd_wait;
-extern int page_launder(int, int);
-extern int free_shortage(void);
-extern int inactive_shortage(void);
-extern void wakeup_kswapd(void);
-extern int try_to_free_pages(unsigned int gfp_mask);
+extern int FASTCALL(try_to_free_pages(zone_t *, unsigned int, unsigned int));
X
X /* linux/mm/page_io.c */
X extern void rw_swap_page(int, struct page *);
@@ -129,37 +121,27 @@
X /* linux/mm/swap_state.c */
X extern void show_swap_cache_info(void);
X extern void add_to_swap_cache(struct page *, swp_entry_t);
-extern int swap_check_entry(unsigned long);
+extern void __delete_from_swap_cache(struct page *page);
+extern void delete_from_swap_cache(struct page *page);
+extern void free_page_and_swap_cache(struct page *page);
X extern struct page * lookup_swap_cache(swp_entry_t);
X extern struct page * read_swap_cache_async(swp_entry_t);
X
X /* linux/mm/oom_kill.c */
-extern int out_of_memory(void);
X extern void oom_kill(void);
X
-/*
- * Make these inline later once they are working properly.
- */
-extern void __delete_from_swap_cache(struct page *page);
-extern void delete_from_swap_cache(struct page *page);
-extern void delete_from_swap_cache_nolock(struct page *page);
-extern void free_page_and_swap_cache(struct page *page);
-
X /* linux/mm/swapfile.c */
-extern int vm_swap_full(void);
X extern unsigned int nr_swapfiles;
X extern struct swap_info_struct swap_info[];
X extern int is_swap_partition(kdev_t);
X extern void si_swapinfo(struct sysinfo *);
-extern swp_entry_t __get_swap_page(unsigned short);
+extern swp_entry_t get_swap_page(void);
X extern void get_swaphandle_info(swp_entry_t, unsigned long *, kdev_t *,
X struct inode **);
X extern int swap_duplicate(swp_entry_t);
X extern int swap_count(struct page *);
X extern int valid_swaphandles(swp_entry_t, unsigned long *);
-#define get_swap_page() __get_swap_page(1)
-extern void __swap_free(swp_entry_t, unsigned short);
-#define swap_free(entry) __swap_free((entry), 1)
+extern void swap_free(swp_entry_t);
X struct swap_list_t {
X int head; /* head of priority-ordered swapfile list */
X int next; /* swapfile to be used next */
@@ -179,86 +161,53 @@
X
X extern spinlock_t pagemap_lru_lock;
X
-/*
- * Page aging defines.
- * Since we do exponential decay of the page age, we
- * can chose a fairly large maximum.
- */
-#define PAGE_AGE_START 2
-#define PAGE_AGE_ADV 3
-#define PAGE_AGE_MAX 64
+extern void FASTCALL(mark_page_accessed(struct page *));
X
X /*
X * List add/del helper macros. These must be called
X * with the pagemap_lru_lock held!
X */
-#define DEBUG_ADD_PAGE \
- if (PageActive(page) || PageInactiveDirty(page) || \
- PageInactiveClean(page)) BUG();
-
-#define ZERO_PAGE_BUG \
- if (page_count(page) == 0) BUG();
-
-#define add_page_to_active_list(page) { \
- DEBUG_ADD_PAGE \
- ZERO_PAGE_BUG \
- SetPageActive(page); \
- list_add(&(page)->lru, &active_list); \
- nr_active_pages++; \
-}
-
-#define add_page_to_inactive_dirty_list(page) { \
- DEBUG_ADD_PAGE \
- ZERO_PAGE_BUG \
- SetPageInactiveDirty(page); \
- list_add(&(page)->lru, &inactive_dirty_list); \
- nr_inactive_dirty_pages++; \
- page->zone->inactive_dirty_pages++; \
-}
-
-#define add_page_to_inactive_clean_list(page) { \
- DEBUG_ADD_PAGE \
- ZERO_PAGE_BUG \
- SetPageInactiveClean(page); \
- list_add(&(page)->lru, &page->zone->inactive_clean_list); \
- page->zone->inactive_clean_pages++; \
-}
-
-#define del_page_from_active_list(page) { \
- list_del(&(page)->lru); \
- ClearPageActive(page); \
- nr_active_pages--; \
- DEBUG_ADD_PAGE \
- ZERO_PAGE_BUG \
-}
-
-#define del_page_from_inactive_dirty_list(page) { \
- list_del(&(page)->lru); \
- ClearPageInactiveDirty(page); \
- nr_inactive_dirty_pages--; \
- page->zone->inactive_dirty_pages--; \
- DEBUG_ADD_PAGE \
- ZERO_PAGE_BUG \
-}
-
-#define del_page_from_inactive_clean_list(page) { \
- list_del(&(page)->lru); \
- ClearPageInactiveClean(page); \
- page->zone->inactive_clean_pages--; \
- DEBUG_ADD_PAGE \
- ZERO_PAGE_BUG \
-}
-
-/*
- * In mm/swap.c::recalculate_vm_stats(), we substract
- * inactive_target from memory_pressure every second.
- * This means that memory_pressure is smoothed over
- * 64 (1 << INACTIVE_SHIFT) seconds.
- */
-#define INACTIVE_SHIFT 6
-#define inactive_target min(unsigned long, \
- (memory_pressure >> INACTIVE_SHIFT), \
- (num_physpages / 4))
+#define DEBUG_LRU_PAGE(page) \
+do { \
+ if (PageActive(page)) \
+ BUG(); \
+ if (PageInactive(page)) \
+ BUG(); \
+ if (page_count(page) == 0) \
+ BUG(); \
+} while (0)
+
+#define add_page_to_active_list(page) \
+do { \
+ DEBUG_LRU_PAGE(page); \
+ SetPageActive(page); \
+ list_add(&(page)->lru, &active_list); \
+ nr_active_pages++; \
+} while (0)
+
+#define add_page_to_inactive_list(page) \
+do { \
+ DEBUG_LRU_PAGE(page); \
+ SetPageInactive(page); \
+ list_add(&(page)->lru, &inactive_list); \
+ nr_inactive_pages++; \
+} while (0)
+
+#define del_page_from_active_list(page) \
+do { \
+ list_del(&(page)->lru); \
+ ClearPageActive(page); \
+ nr_active_pages--; \
+ DEBUG_LRU_PAGE(page); \
+} while (0)
+
+#define del_page_from_inactive_list(page) \
+do { \
+ list_del(&(page)->lru); \
+ ClearPageInactive(page); \
+ nr_inactive_pages--; \
+ DEBUG_LRU_PAGE(page); \
+} while (0)
X
X /*
X * Ugly ugly ugly HACK to make sure the inactive lists
@@ -273,9 +222,6 @@
X #ifndef _LINUX_MAJOR_H
X #include <linux/major.h>
X #endif
-
-#define page_ramdisk(page) \
- (page->buffers && (MAJOR(page->buffers->b_dev) == RAMDISK_MAJOR))
X
X extern spinlock_t swaplock;
X
diff -u --recursive --new-file v2.4.9/linux/include/linux/swapctl.h linux/include/linux/swapctl.h
--- v2.4.9/linux/include/linux/swapctl.h Tue Aug 7 12:48:43 2001
+++ linux/include/linux/swapctl.h Mon Sep 17 16:15:02 2001
@@ -1,28 +1,6 @@
X #ifndef _LINUX_SWAPCTL_H
X #define _LINUX_SWAPCTL_H
X
-#include <asm/page.h>
-#include <linux/fs.h>
-
-typedef struct buffer_mem_v1
-{
- unsigned int min_percent;
- unsigned int borrow_percent;
- unsigned int max_percent;
-} buffer_mem_v1;
-typedef buffer_mem_v1 buffer_mem_t;
-extern buffer_mem_t buffer_mem;
-extern buffer_mem_t page_cache;
-
-typedef struct freepages_v1
-{
- unsigned int min;
- unsigned int low;
- unsigned int high;
-} freepages_v1;
-typedef freepages_v1 freepages_t;
-extern freepages_t freepages;
-
X typedef struct pager_daemon_v1
X {
X unsigned int tries_base;
diff -u --recursive --new-file v2.4.9/linux/include/linux/sysctl.h linux/include/linux/sysctl.h
--- v2.4.9/linux/include/linux/sysctl.h Tue Aug 7 12:48:42 2001
+++ linux/include/linux/sysctl.h Sun Sep 23 10:31:02 2001
@@ -61,7 +61,8 @@
X CTL_FS=5, /* Filesystems */
X CTL_DEBUG=6, /* Debugging */
X CTL_DEV=7, /* Devices */
- CTL_BUS=8 /* Buses */
+ CTL_BUS=8, /* Busses */
+ CTL_ABI=9 /* Binary emulation */
X };
X
X /* CTL_BUS names: */
@@ -118,7 +119,9 @@
X KERN_SHMPATH=48, /* string: path to shm fs */
X KERN_HOTPLUG=49, /* string: path to hotplug policy agent */
X KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */
- KERN_S390_USER_DEBUG_LOGGING=51 /* int: dumps of user faults */
+ KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */
+ KERN_CORE_USES_PID=52, /* int: use core or core.%pid */
+ KERN_CADPID=54, /* int: PID of the process to notify on CAD */
X };
X
X
@@ -281,6 +284,8 @@
X NET_TCP_APP_WIN=86,
X NET_TCP_ADV_WIN_SCALE=87,
X NET_IPV4_NONLOCAL_BIND=88,
+ NET_IPV4_ICMP_RATELIMIT=89,
+ NET_IPV4_ICMP_RATEMASK=90
X };
X
X enum {
@@ -470,6 +475,7 @@
X NET_DECNET_DR_COUNT = 8,
X NET_DECNET_DST_GC_INTERVAL = 9,
X NET_DECNET_CONF = 10,
+ NET_DECNET_NO_FC_MAX_CWND = 11,
X NET_DECNET_DEBUG_LEVEL = 255
X };
X
@@ -602,6 +608,17 @@
X DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4,
X DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5,
X DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6
+};
+
+/* /proc/sys/abi */
+enum
+{
+ ABI_DEFHANDLER_COFF=1, /* default handler for coff binaries */
+ ABI_DEFHANDLER_ELF=2, /* default handler for ELF binaries */
+ ABI_DEFHANDLER_LCALL7=3,/* default handler for procs using lcall7 */
+ ABI_DEFHANDLER_LIBCSO=4,/* default handler for an libc.so ELF interp */
+ ABI_TRACE=5, /* tracing flags */
+ ABI_FAKE_UTSNAME=6, /* fake target utsname information */
X };
X
X #ifdef __KERNEL__
diff -u --recursive --new-file v2.4.9/linux/include/linux/sysrq.h linux/include/linux/sysrq.h
--- v2.4.9/linux/include/linux/sysrq.h Tue Aug 7 12:48:42 2001
+++ linux/include/linux/sysrq.h Mon Sep 17 22:52:35 2001
@@ -5,6 +5,10 @@
X * Linux Magic System Request Key Hacks
X *
X * (c) 1997 Martin Mares <m...@atrey.karlin.mff.cuni.cz>
+ *
+ * (c) 2000 Crutcher Dunnavant <crutche...@datastacks.com>
+ * overhauled to use key registration
+ * based upon discusions in irc://irc.openprojects.net/#kernelnewbies
X */
X
X #include <linux/config.h>
@@ -13,12 +17,79 @@
X struct kbd_struct;
X struct tty_struct;
X
+struct sysrq_key_op {
+ void (*handler)(int, struct pt_regs *,
+ struct kbd_struct *, struct tty_struct *);
+ char *help_msg;
+ char *action_msg;
+};
+
X /* Generic SysRq interface -- you may call it from any device driver, supplying
X * ASCII code of the key, pointer to registers and kbd/tty structs (if they
X * are available -- else NULL's).
X */
X
-void handle_sysrq(int, struct pt_regs *, struct kbd_struct *, struct tty_struct *);
+void handle_sysrq(int, struct pt_regs *,
+ struct kbd_struct *, struct tty_struct *);
+
+
+/*
+ * Nonlocking version of handle sysrq, used by sysrq handlers that need to
+ * call sysrq handlers
+ */
+
+void __handle_sysrq_nolock(int, struct pt_regs *,
+ struct kbd_struct *, struct tty_struct *);
+
+
+#ifdef CONFIG_MAGIC_SYSRQ
+
+/*
+ * Sysrq registration manipulation functions
+ */
+
+void __sysrq_lock_table (void);
+void __sysrq_unlock_table (void);
+struct sysrq_key_op *__sysrq_get_key_op (int key);
+void __sysrq_put_key_op (int key, struct sysrq_key_op *op_p);
+
+extern __inline__ int
+__sysrq_swap_key_ops_nolock(int key, struct sysrq_key_op *insert_op_p,
+ struct sysrq_key_op *remove_op_p) {
+ int retval;
+ if (__sysrq_get_key_op(key) == remove_op_p) {
+ __sysrq_put_key_op(key, insert_op_p);
+ retval = 0;
+ } else {
+ retval = -1;
+ }
+ return retval;
+}
+
+extern __inline__ int
+__sysrq_swap_key_ops(int key, struct sysrq_key_op *insert_op_p,
+ struct sysrq_key_op *remove_op_p) {
+ int retval;
+ __sysrq_lock_table();
+ retval = __sysrq_swap_key_ops_nolock(key, insert_op_p, remove_op_p);
+ __sysrq_unlock_table();
+ return retval;
+}
+
+static inline int register_sysrq_key(int key, struct sysrq_key_op *op_p)
+{
+ return __sysrq_swap_key_ops(key, op_p, NULL);
+}
+
+static inline int unregister_sysrq_key(int key, struct sysrq_key_op *op_p)
+{
+ return __sysrq_swap_key_ops(key, NULL, op_p);
+}
+
+#else
+#define register_sysrq_key(a,b) do {} while(0)
+#define unregister_sysrq_key(a,b) do {} while(0)
+#endif
X
X /* Deferred actions */
X
diff -u --recursive --new-file v2.4.9/linux/include/linux/sysv_fs.h linux/include/linux/sysv_fs.h
--- v2.4.9/linux/include/linux/sysv_fs.h Sun Aug 12 13:28:01 2001
+++ linux/include/linux/sysv_fs.h Sun Sep 2 10:34:36 2001
@@ -325,6 +325,7 @@
X FSTYPE_SYSV2,
X FSTYPE_COH,
X FSTYPE_V7,
+ FSTYPE_AFS,
X FSTYPE_END,
X };
X
@@ -373,6 +374,7 @@
X
X extern struct inode_operations sysv_file_inode_operations;
X extern struct inode_operations sysv_dir_inode_operations;
+extern struct inode_operations sysv_fast_symlink_inode_operations;
X extern struct file_operations sysv_file_operations;
X extern struct file_operations sysv_dir_operations;
X extern struct address_space_operations sysv_aops;
diff -u --recursive --new-file v2.4.9/linux/include/linux/telephony.h linux/include/linux/telephony.h
--- v2.4.9/linux/include/linux/telephony.h Sun Feb 4 10:05:29 2001
+++ linux/include/linux/telephony.h Fri Sep 7 09:28:37 2001
@@ -4,7 +4,7 @@
X *
X * Basic Linux Telephony Interface
X *
- * (c) Copyright 1999 Quicknet Technologies, Inc.
+ * (c) Copyright 1999-2001 Quicknet Technologies, Inc.
X *
X * This program is free software; you can redistribute it and/or
X * modify it under the terms of the GNU General Public License
@@ -17,15 +17,28 @@
X * Contributors: Alan Cox, <al...@redhat.com>
X * David W. Erhart, <der...@quicknet.net>
X *
- * Version: 0.1.0 - December 19, 1999
+ * IN NO EVENT SHALL QUICKNET TECHNOLOGIES, INC. BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF QUICKNET
+ * TECHNOLOGIES, INC. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * QUICKNET TECHNOLOGIES, INC. SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND QUICKNET TECHNOLOGIES, INC. HAS NO OBLIGATION
+ * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Version: $Revision: 4.2 $
+ *
+ * $Id: telephony.h,v 4.2 2001/08/06 07:09:43 craigs Exp $
X *
- * Fixes:
- *
X *****************************************************************************/
X
X #ifndef TELEPHONY_H
X #define TELEPHONY_H
X
+#define TELEPHONY_VERSION 3013
+
X #define PHONE_VENDOR_IXJ 1
X #define PHONE_VENDOR_QUICKNET PHONE_VENDOR_IXJ
X #define PHONE_VENDOR_VOICETRONIX 2
@@ -101,7 +114,7 @@
X #define PHONE_HOOKSTATE _IO ('q', 0x84)
X #define PHONE_MAXRINGS _IOW ('q', 0x85, char)
X #define PHONE_RING_CADENCE _IOW ('q', 0x86, short)
-#define OLD_PHONE_RING_START _IO ('q', 0x87)
+#define OLD_PHONE_RING_START _IO ('q', 0x87)
X #define PHONE_RING_START _IOW ('q', 0x87, PHONE_CID *)
X #define PHONE_RING_STOP _IO ('q', 0x88)
X
@@ -113,6 +126,7 @@
X #define PHONE_REC_DEPTH _IOW ('q', 0x8C, int)
X #define PHONE_FRAME _IOW ('q', 0x8D, int)
X #define PHONE_REC_VOLUME _IOW ('q', 0x8E, int)
+#define PHONE_REC_VOLUME_LINEAR _IOW ('q', 0xDB, int)
X #define PHONE_REC_LEVEL _IO ('q', 0x8F)
X
X #define PHONE_PLAY_CODEC _IOW ('q', 0x90, int)
@@ -120,6 +134,7 @@
X #define PHONE_PLAY_STOP _IO ('q', 0x92)
X #define PHONE_PLAY_DEPTH _IOW ('q', 0x93, int)
X #define PHONE_PLAY_VOLUME _IOW ('q', 0x94, int)
+#define PHONE_PLAY_VOLUME_LINEAR _IOW ('q', 0xDC, int)
X #define PHONE_PLAY_LEVEL _IO ('q', 0x95)
X #define PHONE_DTMF_READY _IOR ('q', 0x96, int)
X #define PHONE_GET_DTMF _IOR ('q', 0x97, int)
@@ -153,7 +168,7 @@
X *
X ******************************************************************************/
X #define PHONE_WINK_DURATION _IOW ('q', 0xA6, int)
-
+#define PHONE_WINK _IOW ('q', 0xAA, int)
X
X /******************************************************************************
X *
@@ -172,17 +187,18 @@
X ALAW = 9,
X LINEAR16 = 10,
X LINEAR8 = 11,
- WSS = 12
+ WSS = 12,
+ G729B = 13
X } phone_codec;
X
X struct phone_codec_data
X {
- phone_codec type;
- unsigned short buf_min, buf_opt, buf_max;
+ phone_codec type;
+ unsigned short buf_min, buf_opt, buf_max;
X };
X
-#define PHONE_QUERY_CODEC _IOWR ('q', 0xA7, struct phone_codec_data *)
-#define PHONE_PSTN_LINETEST _IO ('q', 0xA8)
+#define PHONE_QUERY_CODEC _IOWR ('q', 0xA7, struct phone_codec_data *)
+#define PHONE_PSTN_LINETEST _IO ('q', 0xA8)
X
X /******************************************************************************
X *
@@ -212,8 +228,8 @@
X * indicate the current state of the hookswitch. The pstn_ring bit
X * indicates that the DAA on a LineJACK card has detected ring voltage on
X * the PSTN port. The caller_id bit indicates that caller_id data has been
-* received and is available. The pstn_wink bit indicates that the DAA on
-* the LineJACK has received a wink from the telco switch. The f0, f1, f2
+* recieved and is available. The pstn_wink bit indicates that the DAA on
+* the LineJACK has recieved a wink from the telco switch. The f0, f1, f2
X * and f3 bits indicate that the filter has been triggered by detecting the
X * frequency programmed into that filter.
X *
@@ -246,4 +262,5 @@
X };
X
X
-#endif /* TELEPHONY_H */
+#endif /* TELEPHONY_H */
+
diff -u --recursive --new-file v2.4.9/linux/include/linux/timer.h linux/include/linux/timer.h
--- v2.4.9/linux/include/linux/timer.h Tue Aug 7 12:48:42 2001
+++ linux/include/linux/timer.h Sun Sep 23 10:31:02 2001
@@ -19,6 +19,7 @@
X unsigned long data;
X void (*function)(unsigned long);
X };
+typedef struct timer_list timer_t;
X
X extern void add_timer(struct timer_list * timer);
X extern int del_timer(struct timer_list * timer);
diff -u --recursive --new-file v2.4.9/linux/include/linux/usb.h linux/include/linux/usb.h
--- v2.4.9/linux/include/linux/usb.h Tue Aug 7 12:51:28 2001
+++ linux/include/linux/usb.h Sun Sep 23 10:34:02 2001
@@ -589,11 +589,23 @@
X atomic_t refcnt;
X };
X
-#define USB_MAXCHILDREN (16) /* This is arbitrary */
+/* This is arbitrary.
+ * From USB 2.0 spec Table 11-13, offset 7, a hub can
+ * have up to 255 ports. The most yet reported is 10.
+ */
+#define USB_MAXCHILDREN (16)
X
X struct usb_device {
X int devnum; /* Device number on USB bus */
- int slow; /* Slow device? */
+
+ enum {
+ USB_SPEED_UNKNOWN = 0, /* enumerating */
+ USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */
+ USB_SPEED_HIGH /* usb 2.0 */
+ } speed;
+
+ struct usb_device *tt; /* usb1.1 device on usb2.0 bus */
+ int ttport; /* device/hub port on that tt */
X
X atomic_t refcnt; /* Reference count */
X struct semaphore serialize;
@@ -704,6 +716,9 @@
X * up to us. This one happens to share a lot of bit positions with the UHCI
X * specification, so that much of the uhci driver can just mask the bits
X * appropriately.
+ *
+ * NOTE: there's no encoding (yet?) for a "high speed" endpoint; treat them
+ * like full speed devices.
X */
X
X #define PIPE_ISOCHRONOUS 0
@@ -744,12 +759,13 @@
X
X static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int endpoint)
X {
- return (dev->devnum << 8) | (endpoint << 15) | (dev->slow << 26);
+ return (dev->devnum << 8) | (endpoint << 15) |
+ ((dev->speed == USB_SPEED_LOW) << 26);
X }
X
X static inline unsigned int __default_pipe(struct usb_device *dev)
X {
- return (dev->slow << 26);
+ return ((dev->speed == USB_SPEED_LOW) << 26);
X }
X
X /* Create various pipes... */
diff -u --recursive --new-file v2.4.9/linux/include/linux/vt_kern.h linux/include/linux/vt_kern.h
--- v2.4.9/linux/include/linux/vt_kern.h Tue Aug 7 12:51:23 2001
+++ linux/include/linux/vt_kern.h Sun Sep 23 10:31:02 2001
@@ -8,6 +8,7 @@
X
X #include <linux/config.h>
X #include <linux/vt.h>
+#include <linux/kd.h>
X
X /*
X * Presently, a lot of graphics programs do not restore the contents of
@@ -31,6 +32,7 @@
X } *vt_cons[MAX_NR_CONSOLES];
X
X extern void (*kd_mksound)(unsigned int hz, unsigned int ticks);
+extern int (*kbd_rate)(struct kbd_repeat *rep);
X
X /* console.c */
X
diff -u --recursive --new-file v2.4.9/linux/include/linux/wait.h linux/include/linux/wait.h
--- v2.4.9/linux/include/linux/wait.h Tue Aug 7 12:48:43 2001
+++ linux/include/linux/wait.h Sun Sep 23 10:31:02 2001
@@ -14,6 +14,7 @@
X #include <linux/list.h>
X #include <linux/stddef.h>
X #include <linux/spinlock.h>
+#include <linux/config.h>
X
X #include <asm/page.h>
X #include <asm/processor.h>
@@ -21,7 +22,11 @@
X /*
X * Debug control. Slow but useful.
X */
+#if defined(CONFIG_DEBUG_WAITQ)
+#define WAITQUEUE_DEBUG 1
+#else
X #define WAITQUEUE_DEBUG 0
+#endif
X
X struct __wait_queue {
X unsigned int flags;
diff -u --recursive --new-file v2.4.9/linux/include/net/bluetooth/bluetooth.h linux/include/net/bluetooth/bluetooth.h
--- v2.4.9/linux/include/net/bluetooth/bluetooth.h Tue Jul 3 17:08:22 2001
+++ linux/include/net/bluetooth/bluetooth.h Fri Sep 7 09:28:38 2001
@@ -23,27 +23,26 @@
X */
X
X /*
- * $Id: bluetooth.h,v 1.1 2001/06/01 08:12:11 davem Exp $
+ * $Id: bluetooth.h,v 1.6 2001/08/03 04:19:49 maxk Exp $
X */
X
-#ifndef __IF_BLUETOOTH_H
-#define __IF_BLUETOOTH_H
+#ifndef __BLUETOOTH_H
+#define __BLUETOOTH_H
X
X #include <asm/types.h>
X #include <asm/byteorder.h>
X
+#ifndef AF_BLUETOOTH
+#define AF_BLUETOOTH 31
+#define PF_BLUETOOTH AF_BLUETOOTH
+#endif
+
X #define BTPROTO_L2CAP 0
X #define BTPROTO_HCI 1
X
X #define SOL_HCI 0
X #define SOL_L2CAP 6
X
-typedef struct {
- __u8 b0, b1, b2, b3, b4, b5;
-} bdaddr_t;
-
-#define BDADDR_ANY ((bdaddr_t *)"\000\000\000\000\000")
-
X /* Connection and socket states */
X enum {
X BT_CONNECTED = 1, /* Equal to TCP_ESTABLISHED to make net code happy */
@@ -56,27 +55,33 @@
X BT_CLOSED
X };
X
+/* Endianness conversions */
+#define htobs(a) __cpu_to_le16(a)
+#define htobl(a) __cpu_to_le32(a)
+#define btohs(a) __le16_to_cpu(a)
+#define btohl(a) __le32_to_cpu(a)
+
+/* BD Address */
+typedef struct {
+ __u8 b[6];
+} __attribute__((packed)) bdaddr_t;
+
+#define BDADDR_ANY ((bdaddr_t *)"\000\000\000\000\000")
+
X /* Copy, swap, convert BD Address */
-static __inline__ int bacmp(bdaddr_t *ba1, bdaddr_t *ba2)
+static inline int bacmp(bdaddr_t *ba1, bdaddr_t *ba2)
X {
X return memcmp(ba1, ba2, sizeof(bdaddr_t));
X }
-static __inline__ void bacpy(bdaddr_t *dst, bdaddr_t *src)
+static inline void bacpy(bdaddr_t *dst, bdaddr_t *src)
X {
X memcpy(dst, src, sizeof(bdaddr_t));
X }
X
-extern void baswap(bdaddr_t *dst, bdaddr_t *src);
-
-extern char *batostr(bdaddr_t *ba);
-extern bdaddr_t *strtoba(char *str);
-
-/* Endianness conversions */
-#define htobs(a) __cpu_to_le16(a)
-#define htobl(a) __cpu_to_le32(a)
-#define btohs(a) __le16_to_cpu(a)
-#define btohl(a) __le32_to_cpu(a)
+void baswap(bdaddr_t *dst, bdaddr_t *src);
+char *batostr(bdaddr_t *ba);
+bdaddr_t *strtoba(char *str);
X
X int bterr(__u16 code);
X
-#endif /* __IF_BLUETOOTH_H */
+#endif /* __BLUETOOTH_H */
diff -u --recursive --new-file v2.4.9/linux/include/net/bluetooth/bluez.h linux/include/net/bluetooth/bluez.h
--- v2.4.9/linux/include/net/bluetooth/bluez.h Tue Jul 3 17:08:22 2001
+++ linux/include/net/bluetooth/bluez.h Fri Sep 7 09:28:38 2001
@@ -23,7 +23,7 @@
X */
X
X /*
- * $Id: bluez.h,v 1.1 2001/06/01 08:12:11 davem Exp $
+ * $Id: bluez.h,v 1.4 2001/08/03 04:19:49 maxk Exp $
X */
X
X #ifndef __IF_BLUEZ_H
@@ -31,8 +31,6 @@
X
X #include <net/sock.h>
X
-#define BLUEZ_VER "1.0"
-
X #define BLUEZ_MAX_PROTO 2
X
X /* Reserv for core and drivers use */
@@ -81,91 +79,41 @@
X
X /* ----- SKB helpers ----- */
X struct bluez_skb_cb {
- int incomming, fragmented;
- struct sk_buff_head frags;
+ int incomming;
X };
X #define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb))
X
-static __inline__ struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
+static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how)
X {
X struct sk_buff *skb;
X
X if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) {
- bluez_cb(skb)->incomming = 0;
- bluez_cb(skb)->fragmented = 0;
X skb_reserve(skb, BLUEZ_SKB_RESERVE);
+ bluez_cb(skb)->incomming = 0;
X }
X return skb;
X }
X
-static __inline__ struct sk_buff *bluez_skb_clone(struct sk_buff *skb, int how)
-{
- struct sk_buff *new;
-
- if ((new = skb_clone(skb, how)))
- bluez_cb(new)->fragmented = 0;
- return new;
-}
-
-static __inline__ struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
+static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len,
X int nb, int *err)
X {
X struct sk_buff *skb;
X
X if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) {
- bluez_cb(skb)->incomming = 0;
- bluez_cb(skb)->fragmented = 0;
X skb_reserve(skb, BLUEZ_SKB_RESERVE);
+ bluez_cb(skb)->incomming = 0;
X }
X
X return skb;
X }
X
-static __inline__ int bluez_skb_frags(struct sk_buff *skb)
-{
- if (bluez_cb(skb)->fragmented)
- return skb_queue_len(&bluez_cb(skb)->frags);
- return 0;
-}
-
-static __inline__ void bluez_skb_add_frag(struct sk_buff *skb, struct sk_buff *frag)
-{
- if (!bluez_cb(skb)->fragmented) {
- skb_queue_head_init(&bluez_cb(skb)->frags);
- bluez_cb(skb)->fragmented = 1;
- }
- __skb_queue_tail(&bluez_cb(skb)->frags, frag);
-}
-
-static __inline__ struct sk_buff *bluez_skb_next_frag(struct sk_buff *skb)
+static inline int skb_frags_no(struct sk_buff *skb)
X {
- if (bluez_cb(skb)->fragmented)
- return skb_peek(&bluez_cb(skb)->frags);
- if (skb->next == (void *) skb->list)
- return NULL;
- return skb->next;
-}
-
-static __inline__ struct sk_buff *bluez_skb_get_frag(struct sk_buff *skb)
-{
- if (bluez_cb(skb)->fragmented)
- return __skb_dequeue(&bluez_cb(skb)->frags);
- return NULL;
-}
-
-static __inline__ void bluez_skb_free(struct sk_buff *skb)
-{
- if (bluez_cb(skb)->fragmented)
- __skb_queue_purge(&bluez_cb(skb)->frags);
- kfree_skb(skb);
-}
-
-static __inline__ void bluez_skb_queue_purge(struct sk_buff_head *q)
-{
- struct sk_buff *skb;
+ register struct sk_buff *frag = skb_shinfo(skb)->frag_list;
+ register int n = 1;
X
- while((skb = skb_dequeue(q)))
- bluez_skb_free(skb);
+ for (; frag; frag=frag->next, n++);
+ return n;
X }
X
X extern int hci_core_init(void);
diff -u --recursive --new-file v2.4.9/linux/include/net/bluetooth/hci.h linux/include/net/bluetooth/hci.h
--- v2.4.9/linux/include/net/bluetooth/hci.h Tue Jul 3 17:08:22 2001
+++ linux/include/net/bluetooth/hci.h Fri Sep 7 09:28:38 2001
@@ -23,14 +23,60 @@
X */
X
X /*
- * $Id: hci.h,v 1.1 2001/06/01 08:12:11 davem Exp $
+ * $Id: hci.h,v 1.15 2001/08/05 06:02:15 maxk Exp $
X */
X
-#ifndef __IF_HCI_H
-#define __IF_HCI_H
+#ifndef __HCI_H
+#define __HCI_H
X
X #include <asm/byteorder.h>
X
+#define HCI_MAX_DEV 8
+#define HCI_MAX_FRAME_SIZE 2048
+
+/* HCI dev events */
+#define HCI_DEV_REG 1
+#define HCI_DEV_UNREG 2
+#define HCI_DEV_UP 3
+#define HCI_DEV_DOWN 4
+
+/* HCI device types */
+#define HCI_UART 0
+#define HCI_USB 1
+#define HCI_VHCI 2
+
+/* HCI device modes */
+#define HCI_NORMAL 0x0001
+#define HCI_RAW 0x0002
+#define HCI_MODE_MASK (HCI_NORMAL | HCI_RAW)
+#define HCI_SOCK 0x1000
+
+/* HCI device states */
+#define HCI_INIT 0x0010
+#define HCI_UP 0x0020
+#define HCI_RUNNING 0x0040
+
+/* HCI device flags */
+#define HCI_PSCAN 0x0100
+#define HCI_ISCAN 0x0200
+#define HCI_AUTH 0x0400
+
+/* HCI Ioctl defines */
+#define HCIDEVUP _IOW('H', 201, int)
+#define HCIDEVDOWN _IOW('H', 202, int)
+#define HCIDEVRESET _IOW('H', 203, int)
+#define HCIRESETSTAT _IOW('H', 204, int)
+#define HCIGETINFO _IOR('H', 205, int)
+#define HCIGETDEVLIST _IOR('H', 206, int)
+#define HCISETRAW _IOW('H', 207, int)
+#define HCISETSCAN _IOW('H', 208, int)
+#define HCISETAUTH _IOW('H', 209, int)
+#define HCIINQUIRY _IOR('H', 210, int)
+#define HCISETPTYPE _IOW('H', 211, int)
+#define HCIGETCONNLIST _IOR('H', 212, int)
+
+#ifndef __NO_HCI_DEFS
+
X /* HCI Packet types */
X #define HCI_COMMAND_PKT 0x01
X #define HCI_ACLDATA_PKT 0x02
@@ -38,51 +84,107 @@
X #define HCI_EVENT_PKT 0x04
X #define HCI_UNKNOWN_PKT 0xff
X
+/* HCI Packet types */
+#define HCI_DM1 0x0008
+#define HCI_DM3 0x0400
+#define HCI_DM5 0x4000
+#define HCI_DH1 0x0010
+#define HCI_DH3 0x0800
+#define HCI_DH5 0x8000
+
+/* ACL flags */
+#define ACL_CONT 0x0001
+#define ACL_START 0x0002
+#define ACL_ACTIVE_BCAST 0x0010
+#define ACL_PICO_BCAST 0x0020
+
+/* Baseband links */
+#define SCO_LINK 0x00
+#define ACL_LINK 0x01
+
+/* LMP features */
+#define LMP_3SLOT 0x01
+#define LMP_5SLOT 0x02
+#define LMP_ENCRYPT 0x04
+#define LMP_SOFFSET 0x08
+#define LMP_TACCURACY 0x10
+#define LMP_RSWITCH 0x20
+#define LMP_HOLD 0x40
+#define LMP_SNIF 0x80
+
+#define LMP_PARK 0x01
+#define LMP_RSSI 0x02
+#define LMP_QUALITY 0x04
+#define LMP_SCO 0x08
+#define LMP_HV2 0x10
+#define LMP_HV3 0x20
+#define LMP_ULAW 0x40
+#define LMP_ALAW 0x80
+
+#define LMP_CVSD 0x01
+#define LMP_PSCHEME 0x02
+#define LMP_PCONTROL 0x04
+
X /* ----- HCI Commands ----- */
X /* OGF & OCF values */
X
X /* Informational Parameters */
X #define OGF_INFO_PARAM 0x04
-#define OCF_NOP 0x0000
X
-#define OCF_READ_BUFFER_SIZE 0x0005
+#define OCF_READ_LOCAL_VERSION 0x0001
+typedef struct {
+ __u8 status;
+ __u8 hci_ver;
+ __u16 hci_rev;
+ __u8 lmp_ver;
+ __u16 man_name;
+ __u16 lmp_sub;
+} __attribute__ ((packed)) read_local_version_rp;
+
+#define OCF_READ_LOCAL_FEATURES 0x0003
+typedef struct {
+ __u8 status;
+ __u8 features[8];
+} __attribute__ ((packed)) read_local_features_rp;
+
+#define OCF_READ_BUFFER_SIZE 0x0005
X typedef struct {
X __u8 status;
X __u16 acl_mtu;
X __u8 sco_mtu;
X __u16 acl_max_pkt;
X __u16 sco_max_pkt;
-} __attribute__ ((packed)) read_buffer_size_rp;
+} __attribute__ ((packed)) read_buffer_size_rp;
X
-#define OCF_READ_BD_ADDR 0x0009
+#define OCF_READ_BD_ADDR 0x0009
X typedef struct {
X __u8 status;
X bdaddr_t bdaddr;
-} __attribute__ ((packed)) read_bd_addr_rp;
+} __attribute__ ((packed)) read_bd_addr_rp;
X
X /* Host Controller and Baseband */
-#define OGF_HOST_CTL 0x03
-#define OCF_RESET 0x0003
+#define OGF_HOST_CTL 0x03
+#define OCF_RESET 0x0003
X #define OCF_WRITE_AUTH_ENABLE 0x0020
X #define AUTH_DISABLED 0x00
X #define AUTH_ENABLED 0x01
X
-#define OCF_WRITE_CA_TIMEOUT 0x0016 /* Write_Connection_Accept_Timeout */
-#define OCF_WRITE_PG_TIMEOUT 0x0018 /* Write_Page_Timeout */
+#define OCF_WRITE_CA_TIMEOUT 0x0016
+#define OCF_WRITE_PG_TIMEOUT 0x0018
X
X #define OCF_WRITE_SCAN_ENABLE 0x001A
X #define SCANS_DISABLED 0x00
- #define IS_ENA_PS_DIS 0x01 /* Inquiry scan enabled Page Scan disabled */
- #define IS_DIS_PS_ENA 0x02 /* Inquiry scan disabled Page Scan enabled */
- #define IS_ENA_PS_ENA 0x03 /* Inquiry scan enabled Page Scan enabled */
+ #define IS_ENA_PS_DIS 0x01
+ #define IS_DIS_PS_ENA 0x02
+ #define IS_ENA_PS_ENA 0x03
X
X #define OCF_SET_EVENT_FLT 0x0005
X typedef struct {
X __u8 flt_type;
X __u8 cond_type;
- __u8 condition;
-} __attribute__ ((packed)) set_event_flt_cp;
-#define SET_EVENT_FLT_CP_SIZE 3
+ __u8 condition[0];
+} __attribute__ ((packed)) set_event_flt_cp;
+#define SET_EVENT_FLT_CP_SIZE 2
X
X /* Filter types */
X #define FLT_CLEAR_ALL 0x00
@@ -96,7 +198,33 @@
X
X /* CONN_SETUP Conditions */
X #define CONN_SETUP_AUTO_OFF 0x01
-#define CONN_SETUP_AUTO_ON 0x02
+#define CONN_SETUP_AUTO_ON 0x02
+
+#define OCF_CHANGE_LOCAL_NAME 0x0013
+typedef struct {
+ __u8 name[248];
+} __attribute__ ((packed)) change_local_name_cp;
+#define CHANGE_LOCAL_NAME_CP_SIZE 248
+
+#define OCF_READ_LOCAL_NAME 0x0014
+typedef struct {
+ __u8 status;
+ __u8 name[248];
+} __attribute__ ((packed)) read_local_name_rp;
+#define READ_LOCAL_NAME_RP_SIZE 249
+
+#define OCF_READ_CLASS_OF_DEV 0x0023
+typedef struct {
+ __u8 status;
+ __u8 dev_class[3];
+} __attribute__ ((packed)) read_class_of_dev_rp;
+#define READ_CLASS_OF_DEV_RP_SIZE 4
+
+#define OCF_WRITE_CLASS_OF_DEV 0x0024
+typedef struct {
+ __u8 dev_class[3];
+} __attribute__ ((packed)) write_class_of_dev_cp;
+#define WRITE_CLASS_OF_DEV_CP_SIZE 3
X
X /* Link Control */
X #define OGF_LINK_CTL 0x01
@@ -108,30 +236,30 @@
X __u8 pscan_mode;
X __u16 clock_offset;
X __u8 role_switch;
-} __attribute__ ((packed)) create_conn_cp;
-#define CREATE_CONN_CP_SIZE 13
+} __attribute__ ((packed)) create_conn_cp;
+#define CREATE_CONN_CP_SIZE 13
X
X #define OCF_ACCEPT_CONN_REQ 0x0009
X typedef struct {
X bdaddr_t bdaddr;
X __u8 role;
-} __attribute__ ((packed)) accept_conn_req_cp;
-#define ACCEPT_CONN_REQ_CP_SIZE 7
+} __attribute__ ((packed)) accept_conn_req_cp;
+#define ACCEPT_CONN_REQ_CP_SIZE 7
X
X #define OCF_DISCONNECT 0x0006
X typedef struct {
X __u16 handle;
X __u8 reason;
-} __attribute__ ((packed)) disconnect_cp;
-#define DISCONNECT_CP_SIZE 3
+} __attribute__ ((packed)) disconnect_cp;
+#define DISCONNECT_CP_SIZE 3
X
X #define OCF_INQUIRY 0x0001
X typedef struct {
X __u8 lap[3];
X __u8 lenght;
X __u8 num_rsp;
-} __attribute__ ((packed)) inquiry_cp;
-#define INQUIRY_CP_SIZE 5
+} __attribute__ ((packed)) inquiry_cp;
+#define INQUIRY_CP_SIZE 5
X
X #define OGF_LINK_POLICY 0x02 /* Link Policy */
X
@@ -146,8 +274,8 @@
X __u8 pscan_mode;
X __u8 class[3];
X __u16 clock_offset;
-} __attribute__ ((packed)) inquiry_info;
-#define INQUIRY_INFO_SIZE 14
+} __attribute__ ((packed)) inquiry_info;
+#define INQUIRY_INFO_SIZE 14
X
X #define EVT_CONN_COMPLETE 0x03
X typedef struct {
@@ -156,58 +284,53 @@
X bdaddr_t bdaddr;
X __u8 link_type;
X __u8 encr_mode;
-} __attribute__ ((packed)) evt_conn_complete;
-#define EVT_CONN_COMPLETE_SIZE 13
+} __attribute__ ((packed)) evt_conn_complete;
+#define EVT_CONN_COMPLETE_SIZE 13
X
X #define EVT_CONN_REQUEST 0x04
X typedef struct {
X bdaddr_t bdaddr;
-#if defined (__LITTLE_ENDIAN_BITFIELD)
- __u32 class :24;
- __u32 type :8;
-#else /* (__BIG_ENDIAN_BITFIELD) */
- __u32 type :8;
- __u32 class :24;
-#endif
-} __attribute__ ((packed)) evt_conn_request;
-#define EVT_CONN_REQUEST_SIZE 10
+ __u8 dev_class[3];
+ __u8 link_type;
+} __attribute__ ((packed)) evt_conn_request;
+#define EVT_CONN_REQUEST_SIZE 10
X
X #define EVT_DISCONN_COMPLETE 0x05
X typedef struct {
X __u8 status;
X __u16 handle;
X __u8 reason;
-} __attribute__ ((packed)) evt_disconn_complete;
-#define EVT_DISCONN_COMPLETE_SIZE 4
+} __attribute__ ((packed)) evt_disconn_complete;
+#define EVT_DISCONN_COMPLETE_SIZE 4
X
X #define EVT_CMD_COMPLETE 0x0e
X typedef struct {
X __u8 ncmd;
X __u16 opcode;
-} __attribute__ ((packed)) evt_cmd_complete;
-#define EVT_CMD_COMPLETE_SIZE 3
+} __attribute__ ((packed)) evt_cmd_complete;
+#define EVT_CMD_COMPLETE_SIZE 3
X
X #define EVT_CMD_STATUS 0x0f
X typedef struct {
X __u8 status;
X __u8 ncmd;
X __u16 opcode;
-} __attribute__ ((packed)) evt_cmd_status;
-#define EVT_CMD_STATUS_SIZE 4
+} __attribute__ ((packed)) evt_cmd_status;
+#define EVT_CMD_STATUS_SIZE 4
X
X #define EVT_NUM_COMP_PKTS 0x13
X typedef struct {
X __u8 num_hndl;
X /* variable lenght part */
-} __attribute__ ((packed)) evt_num_comp_pkts;
-#define EVT_NUM_COMP_PKTS_SIZE 1
+} __attribute__ ((packed)) evt_num_comp_pkts;
+#define EVT_NUM_COMP_PKTS_SIZE 1
X
X #define EVT_HCI_DEV_EVENT 0xfd
X typedef struct {
X __u16 event;
X __u16 param;
-} __attribute__ ((packed)) evt_hci_dev_event;
-#define EVT_HCI_DEV_EVENT_SIZE 4
+} __attribute__ ((packed)) evt_hci_dev_event;
+#define EVT_HCI_DEV_EVENT_SIZE 4
X
X /* -------- HCI Packet structures -------- */
X #define HCI_TYPE_LEN 1
@@ -237,78 +360,35 @@
X #define HCI_SCO_HDR_SIZE 3
X
X /* Command opcode pack/unpack */
-#define cmd_opcode_pack(ocf, ogf) (__u16)((ocf & 0x03ff)|(ogf << 10))
+#define cmd_opcode_pack(ogf, ocf) (__u16)((ocf & 0x03ff)|(ogf << 10))
X #define cmd_opcode_ogf(op) (op >> 10)
X #define cmd_opcode_ocf(op) (op & 0x03ff)
X
X /* ACL handle and flags pack/unpack */
X #define acl_handle_pack(h, f) (__u16)((h & 0x0fff)|(f << 12))
-#define acl_handle(h) (h & 0x0fff)
-#define acl_flags(h) (h >> 12)
-
-/* ACL flags */
-#define ACL_CONT 0x0001
-#define ACL_START 0x0002
-#define ACL_ACTIVE_BCAST 0x0010
-#define ACL_PICO_BCAST 0x0020
-
-/* Max frame size */
-#define HCI_MAX_FRAME 4096
-
-/* HCI device types */
-#define HCI_UART 0
-#define HCI_USB 1
-#define HCI_EMU 2
-
-/* HCI device modes */
-#define HCI_NORMAL 0x0001
-#define HCI_RAW 0x0002
-#define HCI_MODE_MASK (HCI_NORMAL | HCI_RAW)
-#define HCI_SOCK 0x1000
-
-/* HCI device states */
-#define HCI_INIT 0x0010
-#define HCI_UP 0x0020
-#define HCI_RUNNING 0x0040
-
-/* HCI device flags */
-#define HCI_PSCAN 0x0100
-#define HCI_ISCAN 0x0200
-#define HCI_AUTH 0x0400
-
-/* HCI Packet types */
-#define HCI_DM1 0x0008
-#define HCI_DM3 0x0400
-#define HCI_DM5 0x4000
-#define HCI_DH1 0x0010
-#define HCI_DH3 0x0800
-#define HCI_DH5 0x8000
+#define acl_handle(h) (h & 0x0fff)
+#define acl_flags(h) (h >> 12)
X
-/* HCI Ioctl defines */
-#define HCIDEVUP _IOW('H', 201, int)
-#define HCIDEVDOWN _IOW('H', 202, int)
-#define HCIDEVRESET _IOW('H', 203, int)
-#define HCIRESETSTAT _IOW('H', 204, int)
-#define HCIGETINFO _IOR('H', 205, int)
-#define HCIGETDEVLIST _IOR('H', 206, int)
-#define HCISETRAW _IOW('H', 207, int)
-#define HCISETSCAN _IOW('H', 208, int)
-#define HCISETAUTH _IOW('H', 209, int)
-#define HCIINQUIRY _IOWR('H', 210, int)
+#endif /* _NO_HCI_DEFS */
X
X /* HCI Socket options */
X #define HCI_DATA_DIR 0x0001
X #define HCI_FILTER 0x0002
X
-/* HCI CMSG types */
+/* HCI CMSG flags */
X #define HCI_CMSG_DIR 0x0001
X
X struct sockaddr_hci {
- sa_family_t hci_family;
- unsigned short hci_dev;
+ sa_family_t hci_family;
+ unsigned short hci_dev;
X };
X #define HCI_DEV_NONE 0xffff
X
+struct hci_filter {
+ __u32 type_mask;
+ __u32 event_mask[2];
+};
+
X struct hci_dev_req {
X __u16 dev_id;
X __u32 dev_opt;
@@ -345,26 +425,32 @@
X __u16 dev_id;
X char name[8];
X
+ bdaddr_t bdaddr;
+
X __u32 flags;
X __u8 type;
X
+ __u8 features[8];
+
+ __u32 pkt_type;
+
X __u16 acl_mtu;
X __u16 acl_max;
X __u16 sco_mtu;
X __u16 sco_max;
X
- bdaddr_t bdaddr;
-
X struct hci_dev_stats stat;
X };
X
-/* Number of devices */
-#define HCI_MAX_DEV 8
+struct hci_conn_info {
+ __u16 handle;
+ bdaddr_t bdaddr;
+};
X
-/* HCI dev events */
-#define HCI_DEV_REG 1
-#define HCI_DEV_UNREG 2
-#define HCI_DEV_UP 3
-#define HCI_DEV_DOWN 4
+struct hci_conn_list_req {
+ __u16 dev_id;
+ __u16 conn_num;
+ struct hci_conn_info conn_info[0];
+};
X
-#endif /* __IF_HCI_H */
+#endif /* __HCI_H */
diff -u --recursive --new-file v2.4.9/linux/include/net/bluetooth/hci_core.h linux/include/net/bluetooth/hci_core.h
--- v2.4.9/linux/include/net/bluetooth/hci_core.h Tue Jul 3 17:08:22 2001
+++ linux/include/net/bluetooth/hci_core.h Fri Sep 7 09:28:38 2001
@@ -23,13 +23,13 @@
SHAR_EOF
true || echo 'restore of patch-2.4.10 failed'
fi
echo 'End of part 188'
echo 'File patch-2.4.10 is continued in part 189'
echo "189" > _shar_seq_.tmp
exit 0