diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-alpha/param.h | 4 | ||||
-rw-r--r-- | include/asm-h8300/param.h | 8 | ||||
-rw-r--r-- | include/asm-parisc/assembly.h | 6 | ||||
-rw-r--r-- | include/asm-parisc/ioctl.h | 51 | ||||
-rw-r--r-- | include/asm-parisc/ioctls.h | 4 | ||||
-rw-r--r-- | include/asm-parisc/termbits.h | 5 | ||||
-rw-r--r-- | include/asm-parisc/termios.h | 6 | ||||
-rw-r--r-- | include/asm-s390/debug.h | 4 | ||||
-rw-r--r-- | include/asm-sparc/mman.h | 5 | ||||
-rw-r--r-- | include/asm-sparc64/mman.h | 5 | ||||
-rw-r--r-- | include/asm-sparc64/thread_info.h | 28 | ||||
-rw-r--r-- | include/asm-um/param.h | 2 | ||||
-rw-r--r-- | include/asm-v850/param.h | 2 | ||||
-rw-r--r-- | include/asm-x86/pgtable.h | 16 | ||||
-rw-r--r-- | include/asm-xtensa/param.h | 2 | ||||
-rw-r--r-- | include/linux/ide.h | 9 | ||||
-rw-r--r-- | include/linux/kernel.h | 12 | ||||
-rw-r--r-- | include/linux/parser.h | 2 | ||||
-rw-r--r-- | include/linux/percpu.h | 8 | ||||
-rw-r--r-- | include/net/9p/9p.h | 240 | ||||
-rw-r--r-- | include/net/9p/client.h | 35 | ||||
-rw-r--r-- | include/net/9p/transport.h | 44 |
22 files changed, 382 insertions, 116 deletions
diff --git a/include/asm-alpha/param.h b/include/asm-alpha/param.h index 0982f1d39499..e691ecfedb2c 100644 --- a/include/asm-alpha/param.h +++ b/include/asm-alpha/param.h | |||
@@ -5,8 +5,12 @@ | |||
5 | hardware ignores reprogramming. We also need userland buy-in to the | 5 | hardware ignores reprogramming. We also need userland buy-in to the |
6 | change in HZ, since this is visible in the wait4 resources etc. */ | 6 | change in HZ, since this is visible in the wait4 resources etc. */ |
7 | 7 | ||
8 | #ifdef __KERNEL__ | ||
8 | #define HZ CONFIG_HZ | 9 | #define HZ CONFIG_HZ |
9 | #define USER_HZ HZ | 10 | #define USER_HZ HZ |
11 | #else | ||
12 | #define HZ 1024 | ||
13 | #endif | ||
10 | 14 | ||
11 | #define EXEC_PAGESIZE 8192 | 15 | #define EXEC_PAGESIZE 8192 |
12 | 16 | ||
diff --git a/include/asm-h8300/param.h b/include/asm-h8300/param.h index 04f64f100379..1c72fb8080ff 100644 --- a/include/asm-h8300/param.h +++ b/include/asm-h8300/param.h | |||
@@ -1,14 +1,12 @@ | |||
1 | #ifndef _H8300_PARAM_H | 1 | #ifndef _H8300_PARAM_H |
2 | #define _H8300_PARAM_H | 2 | #define _H8300_PARAM_H |
3 | 3 | ||
4 | |||
5 | #ifndef HZ | ||
6 | #define HZ CONFIG_HZ | ||
7 | #endif | ||
8 | |||
9 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
5 | #define HZ CONFIG_HZ | ||
10 | #define USER_HZ HZ | 6 | #define USER_HZ HZ |
11 | #define CLOCKS_PER_SEC (USER_HZ) | 7 | #define CLOCKS_PER_SEC (USER_HZ) |
8 | #else | ||
9 | #define HZ 100 | ||
12 | #endif | 10 | #endif |
13 | 11 | ||
14 | #define EXEC_PAGESIZE 4096 | 12 | #define EXEC_PAGESIZE 4096 |
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 5587f0023881..ffb208840ecc 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
@@ -31,9 +31,8 @@ | |||
31 | #define STREGM std,ma | 31 | #define STREGM std,ma |
32 | #define SHRREG shrd | 32 | #define SHRREG shrd |
33 | #define SHLREG shld | 33 | #define SHLREG shld |
34 | #define ADDIB addib,* | ||
35 | #define CMPB cmpb,* | ||
36 | #define ANDCM andcm,* | 34 | #define ANDCM andcm,* |
35 | #define COND(x) * ## x | ||
37 | #define RP_OFFSET 16 | 36 | #define RP_OFFSET 16 |
38 | #define FRAME_SIZE 128 | 37 | #define FRAME_SIZE 128 |
39 | #define CALLEE_REG_FRAME_SIZE 144 | 38 | #define CALLEE_REG_FRAME_SIZE 144 |
@@ -46,9 +45,8 @@ | |||
46 | #define STREGM stwm | 45 | #define STREGM stwm |
47 | #define SHRREG shr | 46 | #define SHRREG shr |
48 | #define SHLREG shlw | 47 | #define SHLREG shlw |
49 | #define ADDIB addib, | ||
50 | #define CMPB cmpb, | ||
51 | #define ANDCM andcm | 48 | #define ANDCM andcm |
49 | #define COND(x) x | ||
52 | #define RP_OFFSET 20 | 50 | #define RP_OFFSET 20 |
53 | #define FRAME_SIZE 64 | 51 | #define FRAME_SIZE 64 |
54 | #define CALLEE_REG_FRAME_SIZE 128 | 52 | #define CALLEE_REG_FRAME_SIZE 128 |
diff --git a/include/asm-parisc/ioctl.h b/include/asm-parisc/ioctl.h index 68338d2bda4e..ec8efa02beda 100644 --- a/include/asm-parisc/ioctl.h +++ b/include/asm-parisc/ioctl.h | |||
@@ -32,21 +32,6 @@ | |||
32 | * NOTE: This limits the max parameter size to 16kB -1 ! | 32 | * NOTE: This limits the max parameter size to 16kB -1 ! |
33 | */ | 33 | */ |
34 | 34 | ||
35 | #define _IOC_NRBITS 8 | ||
36 | #define _IOC_TYPEBITS 8 | ||
37 | #define _IOC_SIZEBITS 14 | ||
38 | #define _IOC_DIRBITS 2 | ||
39 | |||
40 | #define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) | ||
41 | #define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) | ||
42 | #define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) | ||
43 | #define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) | ||
44 | |||
45 | #define _IOC_NRSHIFT 0 | ||
46 | #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) | ||
47 | #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) | ||
48 | #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) | ||
49 | |||
50 | /* | 35 | /* |
51 | * Direction bits. | 36 | * Direction bits. |
52 | */ | 37 | */ |
@@ -54,40 +39,6 @@ | |||
54 | #define _IOC_WRITE 2U | 39 | #define _IOC_WRITE 2U |
55 | #define _IOC_READ 1U | 40 | #define _IOC_READ 1U |
56 | 41 | ||
57 | #define _IOC(dir,type,nr,size) \ | 42 | #include <asm-generic/ioctl.h> |
58 | (((dir) << _IOC_DIRSHIFT) | \ | ||
59 | ((type) << _IOC_TYPESHIFT) | \ | ||
60 | ((nr) << _IOC_NRSHIFT) | \ | ||
61 | ((size) << _IOC_SIZESHIFT)) | ||
62 | |||
63 | /* provoke compile error for invalid uses of size argument */ | ||
64 | extern unsigned int __invalid_size_argument_for_IOC; | ||
65 | #define _IOC_TYPECHECK(t) \ | ||
66 | ((sizeof(t) == sizeof(t[1]) && \ | ||
67 | sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ | ||
68 | sizeof(t) : __invalid_size_argument_for_IOC) | ||
69 | |||
70 | /* used to create numbers */ | ||
71 | #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) | ||
72 | #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) | ||
73 | #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) | ||
74 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) | ||
75 | #define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) | ||
76 | #define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) | ||
77 | #define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) | ||
78 | |||
79 | /* used to decode ioctl numbers.. */ | ||
80 | #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) | ||
81 | #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) | ||
82 | #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) | ||
83 | #define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) | ||
84 | |||
85 | /* ...and for the drivers/sound files... */ | ||
86 | |||
87 | #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) | ||
88 | #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) | ||
89 | #define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT) | ||
90 | #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT) | ||
91 | #define IOCSIZE_SHIFT (_IOC_SIZESHIFT) | ||
92 | 43 | ||
93 | #endif /* _ASM_PARISC_IOCTL_H */ | 44 | #endif /* _ASM_PARISC_IOCTL_H */ |
diff --git a/include/asm-parisc/ioctls.h b/include/asm-parisc/ioctls.h index ee84e4172c36..6747fad07a3e 100644 --- a/include/asm-parisc/ioctls.h +++ b/include/asm-parisc/ioctls.h | |||
@@ -46,6 +46,10 @@ | |||
46 | #define TIOCSBRK 0x5427 /* BSD compatibility */ | 46 | #define TIOCSBRK 0x5427 /* BSD compatibility */ |
47 | #define TIOCCBRK 0x5428 /* BSD compatibility */ | 47 | #define TIOCCBRK 0x5428 /* BSD compatibility */ |
48 | #define TIOCGSID _IOR('T', 20, int) /* Return the session ID of FD */ | 48 | #define TIOCGSID _IOR('T', 20, int) /* Return the session ID of FD */ |
49 | #define TCGETS2 _IOR('T',0x2A, struct termios2) | ||
50 | #define TCSETS2 _IOW('T',0x2B, struct termios2) | ||
51 | #define TCSETSW2 _IOW('T',0x2C, struct termios2) | ||
52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | ||
49 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
50 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
51 | 55 | ||
diff --git a/include/asm-parisc/termbits.h b/include/asm-parisc/termbits.h index e847fe979684..d8bbc73b16b7 100644 --- a/include/asm-parisc/termbits.h +++ b/include/asm-parisc/termbits.h | |||
@@ -141,6 +141,7 @@ struct ktermios { | |||
141 | #define HUPCL 0002000 | 141 | #define HUPCL 0002000 |
142 | #define CLOCAL 0004000 | 142 | #define CLOCAL 0004000 |
143 | #define CBAUDEX 0010000 | 143 | #define CBAUDEX 0010000 |
144 | #define BOTHER 0010000 | ||
144 | #define B57600 0010001 | 145 | #define B57600 0010001 |
145 | #define B115200 0010002 | 146 | #define B115200 0010002 |
146 | #define B230400 0010003 | 147 | #define B230400 0010003 |
@@ -156,10 +157,12 @@ struct ktermios { | |||
156 | #define B3000000 0010015 | 157 | #define B3000000 0010015 |
157 | #define B3500000 0010016 | 158 | #define B3500000 0010016 |
158 | #define B4000000 0010017 | 159 | #define B4000000 0010017 |
159 | #define CIBAUD 002003600000 /* input baud rate (not used) */ | 160 | #define CIBAUD 002003600000 /* input baud rate */ |
160 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ | 161 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ |
161 | #define CRTSCTS 020000000000 /* flow control */ | 162 | #define CRTSCTS 020000000000 /* flow control */ |
162 | 163 | ||
164 | #define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */ | ||
165 | |||
163 | 166 | ||
164 | /* c_lflag bits */ | 167 | /* c_lflag bits */ |
165 | #define ISIG 0000001 | 168 | #define ISIG 0000001 |
diff --git a/include/asm-parisc/termios.h b/include/asm-parisc/termios.h index 5345b3420475..a2a57a4548af 100644 --- a/include/asm-parisc/termios.h +++ b/include/asm-parisc/termios.h | |||
@@ -80,8 +80,10 @@ struct termio { | |||
80 | copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ | 80 | copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ |
81 | }) | 81 | }) |
82 | 82 | ||
83 | #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) | 83 | #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2)) |
84 | #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) | 84 | #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2)) |
85 | #define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios)) | ||
86 | #define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios)) | ||
85 | 87 | ||
86 | #endif /* __KERNEL__ */ | 88 | #endif /* __KERNEL__ */ |
87 | 89 | ||
diff --git a/include/asm-s390/debug.h b/include/asm-s390/debug.h index 335baf4fc64f..9450ce6e32de 100644 --- a/include/asm-s390/debug.h +++ b/include/asm-s390/debug.h | |||
@@ -120,10 +120,10 @@ debug_entry_t* debug_exception_common(debug_info_t* id, int level, | |||
120 | 120 | ||
121 | /* Debug Feature API: */ | 121 | /* Debug Feature API: */ |
122 | 122 | ||
123 | debug_info_t* debug_register(char* name, int pages, int nr_areas, | 123 | debug_info_t *debug_register(const char *name, int pages, int nr_areas, |
124 | int buf_size); | 124 | int buf_size); |
125 | 125 | ||
126 | debug_info_t *debug_register_mode(char *name, int pages, int nr_areas, | 126 | debug_info_t *debug_register_mode(const char *name, int pages, int nr_areas, |
127 | int buf_size, mode_t mode, uid_t uid, | 127 | int buf_size, mode_t mode, uid_t uid, |
128 | gid_t gid); | 128 | gid_t gid); |
129 | 129 | ||
diff --git a/include/asm-sparc/mman.h b/include/asm-sparc/mman.h index e18be984c01d..3d16b40bb8ef 100644 --- a/include/asm-sparc/mman.h +++ b/include/asm-sparc/mman.h | |||
@@ -24,9 +24,8 @@ | |||
24 | 24 | ||
25 | #ifdef __KERNEL__ | 25 | #ifdef __KERNEL__ |
26 | #ifndef __ASSEMBLY__ | 26 | #ifndef __ASSEMBLY__ |
27 | #define arch_mmap_check sparc_mmap_check | 27 | #define arch_mmap_check(addr,len,flags) sparc_mmap_check(addr,len) |
28 | int sparc_mmap_check(unsigned long addr, unsigned long len, | 28 | int sparc_mmap_check(unsigned long addr, unsigned long len); |
29 | unsigned long flags); | ||
30 | #endif | 29 | #endif |
31 | #endif | 30 | #endif |
32 | 31 | ||
diff --git a/include/asm-sparc64/mman.h b/include/asm-sparc64/mman.h index e584563b56eb..625be4d61baf 100644 --- a/include/asm-sparc64/mman.h +++ b/include/asm-sparc64/mman.h | |||
@@ -24,9 +24,8 @@ | |||
24 | 24 | ||
25 | #ifdef __KERNEL__ | 25 | #ifdef __KERNEL__ |
26 | #ifndef __ASSEMBLY__ | 26 | #ifndef __ASSEMBLY__ |
27 | #define arch_mmap_check sparc64_mmap_check | 27 | #define arch_mmap_check(addr,len,flags) sparc64_mmap_check(addr,len) |
28 | int sparc64_mmap_check(unsigned long addr, unsigned long len, | 28 | int sparc64_mmap_check(unsigned long addr, unsigned long len); |
29 | unsigned long flags); | ||
30 | #endif | 29 | #endif |
31 | #endif | 30 | #endif |
32 | 31 | ||
diff --git a/include/asm-sparc64/thread_info.h b/include/asm-sparc64/thread_info.h index 71e42d1a80d9..e5873e385306 100644 --- a/include/asm-sparc64/thread_info.h +++ b/include/asm-sparc64/thread_info.h | |||
@@ -38,7 +38,7 @@ struct thread_info { | |||
38 | struct task_struct *task; | 38 | struct task_struct *task; |
39 | unsigned long flags; | 39 | unsigned long flags; |
40 | __u8 fpsaved[7]; | 40 | __u8 fpsaved[7]; |
41 | __u8 pad; | 41 | __u8 status; |
42 | unsigned long ksp; | 42 | unsigned long ksp; |
43 | 43 | ||
44 | /* D$ line 2 */ | 44 | /* D$ line 2 */ |
@@ -217,7 +217,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
217 | * nop | 217 | * nop |
218 | */ | 218 | */ |
219 | #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ | 219 | #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ |
220 | #define TIF_RESTORE_SIGMASK 1 /* restore signal mask in do_signal() */ | 220 | /* flags bit 1 is available */ |
221 | #define TIF_SIGPENDING 2 /* signal pending */ | 221 | #define TIF_SIGPENDING 2 /* signal pending */ |
222 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ | 222 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ |
223 | #define TIF_PERFCTR 4 /* performance counters active */ | 223 | #define TIF_PERFCTR 4 /* performance counters active */ |
@@ -244,14 +244,34 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
244 | #define _TIF_32BIT (1<<TIF_32BIT) | 244 | #define _TIF_32BIT (1<<TIF_32BIT) |
245 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 245 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
246 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 246 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
247 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | ||
248 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) | 247 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) |
249 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 248 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
250 | 249 | ||
251 | #define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \ | 250 | #define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \ |
252 | (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK | \ | 251 | (_TIF_SIGPENDING | \ |
253 | _TIF_NEED_RESCHED | _TIF_PERFCTR)) | 252 | _TIF_NEED_RESCHED | _TIF_PERFCTR)) |
254 | 253 | ||
254 | /* | ||
255 | * Thread-synchronous status. | ||
256 | * | ||
257 | * This is different from the flags in that nobody else | ||
258 | * ever touches our thread-synchronous status, so we don't | ||
259 | * have to worry about atomic accesses. | ||
260 | * | ||
261 | * Note that there are only 8 bits available. | ||
262 | */ | ||
263 | #define TS_RESTORE_SIGMASK 0x0001 /* restore signal mask in do_signal() */ | ||
264 | |||
265 | #ifndef __ASSEMBLY__ | ||
266 | #define HAVE_SET_RESTORE_SIGMASK 1 | ||
267 | static inline void set_restore_sigmask(void) | ||
268 | { | ||
269 | struct thread_info *ti = current_thread_info(); | ||
270 | ti->status |= TS_RESTORE_SIGMASK; | ||
271 | set_bit(TIF_SIGPENDING, &ti->flags); | ||
272 | } | ||
273 | #endif /* !__ASSEMBLY__ */ | ||
274 | |||
255 | #endif /* __KERNEL__ */ | 275 | #endif /* __KERNEL__ */ |
256 | 276 | ||
257 | #endif /* _ASM_THREAD_INFO_H */ | 277 | #endif /* _ASM_THREAD_INFO_H */ |
diff --git a/include/asm-um/param.h b/include/asm-um/param.h index 4cd4a226f8c1..e44f4e60d16d 100644 --- a/include/asm-um/param.h +++ b/include/asm-um/param.h | |||
@@ -13,6 +13,8 @@ | |||
13 | #define HZ CONFIG_HZ | 13 | #define HZ CONFIG_HZ |
14 | #define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | 14 | #define USER_HZ 100 /* .. some user interfaces are in "ticks" */ |
15 | #define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */ | 15 | #define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */ |
16 | #else | ||
17 | #define HZ 100 | ||
16 | #endif | 18 | #endif |
17 | 19 | ||
18 | #endif | 20 | #endif |
diff --git a/include/asm-v850/param.h b/include/asm-v850/param.h index 281832690290..4391f5fe0204 100644 --- a/include/asm-v850/param.h +++ b/include/asm-v850/param.h | |||
@@ -26,6 +26,8 @@ | |||
26 | # define HZ CONFIG_HZ | 26 | # define HZ CONFIG_HZ |
27 | # define USER_HZ 100 | 27 | # define USER_HZ 100 |
28 | # define CLOCKS_PER_SEC USER_HZ | 28 | # define CLOCKS_PER_SEC USER_HZ |
29 | #else | ||
30 | # define HZ 100 | ||
29 | #endif | 31 | #endif |
30 | 32 | ||
31 | #endif /* __V850_PARAM_H__ */ | 33 | #endif /* __V850_PARAM_H__ */ |
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index 801b31f71452..55c3a0e3a8ce 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h | |||
@@ -57,7 +57,8 @@ | |||
57 | #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \ | 57 | #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \ |
58 | _PAGE_DIRTY) | 58 | _PAGE_DIRTY) |
59 | 59 | ||
60 | #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) | 60 | #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_PCD | _PAGE_PWT | \ |
61 | _PAGE_ACCESSED | _PAGE_DIRTY) | ||
61 | 62 | ||
62 | #define _PAGE_CACHE_MASK (_PAGE_PCD | _PAGE_PWT) | 63 | #define _PAGE_CACHE_MASK (_PAGE_PCD | _PAGE_PWT) |
63 | #define _PAGE_CACHE_WB (0) | 64 | #define _PAGE_CACHE_WB (0) |
@@ -288,12 +289,21 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
288 | * Chop off the NX bit (if present), and add the NX portion of | 289 | * Chop off the NX bit (if present), and add the NX portion of |
289 | * the newprot (if present): | 290 | * the newprot (if present): |
290 | */ | 291 | */ |
291 | val &= _PAGE_CHG_MASK & ~_PAGE_NX; | 292 | val &= _PAGE_CHG_MASK; |
292 | val |= pgprot_val(newprot) & __supported_pte_mask; | 293 | val |= pgprot_val(newprot) & (~_PAGE_CHG_MASK) & __supported_pte_mask; |
293 | 294 | ||
294 | return __pte(val); | 295 | return __pte(val); |
295 | } | 296 | } |
296 | 297 | ||
298 | /* mprotect needs to preserve PAT bits when updating vm_page_prot */ | ||
299 | #define pgprot_modify pgprot_modify | ||
300 | static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) | ||
301 | { | ||
302 | pgprotval_t preservebits = pgprot_val(oldprot) & _PAGE_CHG_MASK; | ||
303 | pgprotval_t addbits = pgprot_val(newprot); | ||
304 | return __pgprot(preservebits | addbits); | ||
305 | } | ||
306 | |||
297 | #define pte_pgprot(x) __pgprot(pte_val(x) & (0xfff | _PAGE_NX)) | 307 | #define pte_pgprot(x) __pgprot(pte_val(x) & (0xfff | _PAGE_NX)) |
298 | 308 | ||
299 | #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) | 309 | #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) |
diff --git a/include/asm-xtensa/param.h b/include/asm-xtensa/param.h index 82ad34d92d35..ba03d5aeab6b 100644 --- a/include/asm-xtensa/param.h +++ b/include/asm-xtensa/param.h | |||
@@ -15,6 +15,8 @@ | |||
15 | # define HZ CONFIG_HZ /* internal timer frequency */ | 15 | # define HZ CONFIG_HZ /* internal timer frequency */ |
16 | # define USER_HZ 100 /* for user interfaces in "ticks" */ | 16 | # define USER_HZ 100 /* for user interfaces in "ticks" */ |
17 | # define CLOCKS_PER_SEC (USER_HZ) /* frequnzy at which times() counts */ | 17 | # define CLOCKS_PER_SEC (USER_HZ) /* frequnzy at which times() counts */ |
18 | #else | ||
19 | # define HZ 100 | ||
18 | #endif | 20 | #endif |
19 | 21 | ||
20 | #define EXEC_PAGESIZE 4096 | 22 | #define EXEC_PAGESIZE 4096 |
diff --git a/include/linux/ide.h b/include/linux/ide.h index b0135b0c3a04..f8f195c20da2 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -965,7 +965,6 @@ typedef struct ide_task_s { | |||
965 | void ide_tf_dump(const char *, struct ide_taskfile *); | 965 | void ide_tf_dump(const char *, struct ide_taskfile *); |
966 | 966 | ||
967 | extern void SELECT_DRIVE(ide_drive_t *); | 967 | extern void SELECT_DRIVE(ide_drive_t *); |
968 | extern void SELECT_MASK(ide_drive_t *, int); | ||
969 | 968 | ||
970 | extern int drive_is_ready(ide_drive_t *); | 969 | extern int drive_is_ready(ide_drive_t *); |
971 | 970 | ||
@@ -1058,8 +1057,8 @@ enum { | |||
1058 | IDE_HFLAG_NO_SET_MODE = (1 << 9), | 1057 | IDE_HFLAG_NO_SET_MODE = (1 << 9), |
1059 | /* trust BIOS for programming chipset/device for DMA */ | 1058 | /* trust BIOS for programming chipset/device for DMA */ |
1060 | IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10), | 1059 | IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10), |
1061 | /* host uses VDMA (tied with IDE_HFLAG_CS5520 for now) */ | 1060 | /* host is CS5510/CS5520 */ |
1062 | IDE_HFLAG_VDMA = (1 << 11), | 1061 | IDE_HFLAG_CS5520 = (1 << 11), |
1063 | /* ATAPI DMA is unsupported */ | 1062 | /* ATAPI DMA is unsupported */ |
1064 | IDE_HFLAG_NO_ATAPI_DMA = (1 << 12), | 1063 | IDE_HFLAG_NO_ATAPI_DMA = (1 << 12), |
1065 | /* set if host is a "non-bootable" controller */ | 1064 | /* set if host is a "non-bootable" controller */ |
@@ -1070,8 +1069,6 @@ enum { | |||
1070 | IDE_HFLAG_NO_AUTODMA = (1 << 15), | 1069 | IDE_HFLAG_NO_AUTODMA = (1 << 15), |
1071 | /* host uses MMIO */ | 1070 | /* host uses MMIO */ |
1072 | IDE_HFLAG_MMIO = (1 << 16), | 1071 | IDE_HFLAG_MMIO = (1 << 16), |
1073 | /* host is CS5510/CS5520 */ | ||
1074 | IDE_HFLAG_CS5520 = IDE_HFLAG_VDMA, | ||
1075 | /* no LBA48 */ | 1072 | /* no LBA48 */ |
1076 | IDE_HFLAG_NO_LBA48 = (1 << 17), | 1073 | IDE_HFLAG_NO_LBA48 = (1 << 17), |
1077 | /* no LBA48 DMA */ | 1074 | /* no LBA48 DMA */ |
@@ -1101,6 +1098,8 @@ enum { | |||
1101 | IDE_HFLAG_NO_IO_32BIT = (1 << 30), | 1098 | IDE_HFLAG_NO_IO_32BIT = (1 << 30), |
1102 | /* never unmask IRQs */ | 1099 | /* never unmask IRQs */ |
1103 | IDE_HFLAG_NO_UNMASK_IRQS = (1 << 31), | 1100 | IDE_HFLAG_NO_UNMASK_IRQS = (1 << 31), |
1101 | /* host uses VDMA (disabled for now) */ | ||
1102 | IDE_HFLAG_VDMA = 0, | ||
1104 | }; | 1103 | }; |
1105 | 1104 | ||
1106 | #ifdef CONFIG_BLK_DEV_OFFBOARD | 1105 | #ifdef CONFIG_BLK_DEV_OFFBOARD |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 4d46e299afb5..792bf0aa779b 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -276,7 +276,17 @@ extern void print_hex_dump(const char *level, const char *prefix_str, | |||
276 | const void *buf, size_t len, bool ascii); | 276 | const void *buf, size_t len, bool ascii); |
277 | extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, | 277 | extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, |
278 | const void *buf, size_t len); | 278 | const void *buf, size_t len); |
279 | #define hex_asc(x) "0123456789abcdef"[x] | 279 | |
280 | extern const char hex_asc[]; | ||
281 | #define hex_asc_lo(x) hex_asc[((x) & 0x0f)] | ||
282 | #define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4] | ||
283 | |||
284 | static inline char *pack_hex_byte(char *buf, u8 byte) | ||
285 | { | ||
286 | *buf++ = hex_asc_hi(byte); | ||
287 | *buf++ = hex_asc_lo(byte); | ||
288 | return buf; | ||
289 | } | ||
280 | 290 | ||
281 | #define pr_emerg(fmt, arg...) \ | 291 | #define pr_emerg(fmt, arg...) \ |
282 | printk(KERN_EMERG fmt, ##arg) | 292 | printk(KERN_EMERG fmt, ##arg) |
diff --git a/include/linux/parser.h b/include/linux/parser.h index 26b2bdfcaf06..7dcd05075756 100644 --- a/include/linux/parser.h +++ b/include/linux/parser.h | |||
@@ -29,5 +29,5 @@ int match_token(char *, match_table_t table, substring_t args[]); | |||
29 | int match_int(substring_t *, int *result); | 29 | int match_int(substring_t *, int *result); |
30 | int match_octal(substring_t *, int *result); | 30 | int match_octal(substring_t *, int *result); |
31 | int match_hex(substring_t *, int *result); | 31 | int match_hex(substring_t *, int *result); |
32 | void match_strcpy(char *, const substring_t *); | 32 | size_t match_strlcpy(char *, const substring_t *, size_t); |
33 | char *match_strdup(const substring_t *); | 33 | char *match_strdup(const substring_t *); |
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index d746a2abb322..4cdd393e71e1 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h | |||
@@ -13,8 +13,14 @@ | |||
13 | __attribute__((__section__(".data.percpu"))) \ | 13 | __attribute__((__section__(".data.percpu"))) \ |
14 | PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name | 14 | PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name |
15 | 15 | ||
16 | #ifdef MODULE | ||
17 | #define SHARED_ALIGNED_SECTION ".data.percpu" | ||
18 | #else | ||
19 | #define SHARED_ALIGNED_SECTION ".data.percpu.shared_aligned" | ||
20 | #endif | ||
21 | |||
16 | #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \ | 22 | #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \ |
17 | __attribute__((__section__(".data.percpu.shared_aligned"))) \ | 23 | __attribute__((__section__(SHARED_ALIGNED_SECTION))) \ |
18 | PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name \ | 24 | PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name \ |
19 | ____cacheline_aligned_in_smp | 25 | ____cacheline_aligned_in_smp |
20 | #else | 26 | #else |
diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h index 585eb4496990..b3d3e27c6299 100644 --- a/include/net/9p/9p.h +++ b/include/net/9p/9p.h | |||
@@ -29,14 +29,31 @@ | |||
29 | 29 | ||
30 | #ifdef CONFIG_NET_9P_DEBUG | 30 | #ifdef CONFIG_NET_9P_DEBUG |
31 | 31 | ||
32 | #define P9_DEBUG_ERROR (1<<0) | 32 | /** |
33 | #define P9_DEBUG_9P (1<<2) | 33 | * enum p9_debug_flags - bits for mount time debug parameter |
34 | #define P9_DEBUG_VFS (1<<3) | 34 | * @P9_DEBUG_ERROR: more verbose error messages including original error string |
35 | #define P9_DEBUG_CONV (1<<4) | 35 | * @P9_DEBUG_9P: 9P protocol tracing |
36 | #define P9_DEBUG_MUX (1<<5) | 36 | * @P9_DEBUG_VFS: VFS API tracing |
37 | #define P9_DEBUG_TRANS (1<<6) | 37 | * @P9_DEBUG_CONV: protocol conversion tracing |
38 | #define P9_DEBUG_SLABS (1<<7) | 38 | * @P9_DEBUG_MUX: trace management of concurrent transactions |
39 | #define P9_DEBUG_FCALL (1<<8) | 39 | * @P9_DEBUG_TRANS: transport tracing |
40 | * @P9_DEBUG_SLABS: memory management tracing | ||
41 | * @P9_DEBUG_FCALL: verbose dump of protocol messages | ||
42 | * | ||
43 | * These flags are passed at mount time to turn on various levels of | ||
44 | * verbosity and tracing which will be output to the system logs. | ||
45 | */ | ||
46 | |||
47 | enum p9_debug_flags { | ||
48 | P9_DEBUG_ERROR = (1<<0), | ||
49 | P9_DEBUG_9P = (1<<2), | ||
50 | P9_DEBUG_VFS = (1<<3), | ||
51 | P9_DEBUG_CONV = (1<<4), | ||
52 | P9_DEBUG_MUX = (1<<5), | ||
53 | P9_DEBUG_TRANS = (1<<6), | ||
54 | P9_DEBUG_SLABS = (1<<7), | ||
55 | P9_DEBUG_FCALL = (1<<8), | ||
56 | }; | ||
40 | 57 | ||
41 | extern unsigned int p9_debug_level; | 58 | extern unsigned int p9_debug_level; |
42 | 59 | ||
@@ -62,9 +79,47 @@ do { \ | |||
62 | format , __FUNCTION__, task_pid_nr(current), ## arg); \ | 79 | format , __FUNCTION__, task_pid_nr(current), ## arg); \ |
63 | } while (0) | 80 | } while (0) |
64 | 81 | ||
82 | /** | ||
83 | * enum p9_msg_t - 9P message types | ||
84 | * @P9_TVERSION: version handshake request | ||
85 | * @P9_RVERSION: version handshake response | ||
86 | * @P9_TAUTH: request to establish authentication channel | ||
87 | * @P9_RAUTH: response with authentication information | ||
88 | * @P9_TATTACH: establish user access to file service | ||
89 | * @P9_RATTACH: response with top level handle to file hierarchy | ||
90 | * @P9_TERROR: not used | ||
91 | * @P9_RERROR: response for any failed request | ||
92 | * @P9_TFLUSH: request to abort a previous request | ||
93 | * @P9_RFLUSH: response when previous request has been cancelled | ||
94 | * @P9_TWALK: descend a directory hierarchy | ||
95 | * @P9_RWALK: response with new handle for position within hierarchy | ||
96 | * @P9_TOPEN: prepare a handle for I/O on an existing file | ||
97 | * @P9_ROPEN: response with file access information | ||
98 | * @P9_TCREATE: prepare a handle for I/O on a new file | ||
99 | * @P9_RCREATE: response with file access information | ||
100 | * @P9_TREAD: request to transfer data from a file or directory | ||
101 | * @P9_RREAD: response with data requested | ||
102 | * @P9_TWRITE: reuqest to transfer data to a file | ||
103 | * @P9_RWRITE: response with out much data was transfered to file | ||
104 | * @P9_TCLUNK: forget about a handle to an entity within the file system | ||
105 | * @P9_RCLUNK: response when server has forgotten about the handle | ||
106 | * @P9_TREMOVE: request to remove an entity from the hierarchy | ||
107 | * @P9_RREMOVE: response when server has removed the entity | ||
108 | * @P9_TSTAT: request file entity attributes | ||
109 | * @P9_RSTAT: response with file entity attributes | ||
110 | * @P9_TWSTAT: request to update file entity attributes | ||
111 | * @P9_RWSTAT: response when file entity attributes are updated | ||
112 | * | ||
113 | * There are 14 basic operations in 9P2000, paired as | ||
114 | * requests and responses. The one special case is ERROR | ||
115 | * as there is no @P9_TERROR request for clients to transmit to | ||
116 | * the server, but the server may respond to any other request | ||
117 | * with an @P9_RERROR. | ||
118 | * | ||
119 | * See Also: http://plan9.bell-labs.com/sys/man/5/INDEX.html | ||
120 | */ | ||
65 | 121 | ||
66 | /* Message Types */ | 122 | enum p9_msg_t { |
67 | enum { | ||
68 | P9_TVERSION = 100, | 123 | P9_TVERSION = 100, |
69 | P9_RVERSION, | 124 | P9_RVERSION, |
70 | P9_TAUTH = 102, | 125 | P9_TAUTH = 102, |
@@ -95,30 +150,71 @@ enum { | |||
95 | P9_RWSTAT, | 150 | P9_RWSTAT, |
96 | }; | 151 | }; |
97 | 152 | ||
98 | /* open modes */ | 153 | /** |
99 | enum { | 154 | * enum p9_open_mode_t - 9P open modes |
155 | * @P9_OREAD: open file for reading only | ||
156 | * @P9_OWRITE: open file for writing only | ||
157 | * @P9_ORDWR: open file for reading or writing | ||
158 | * @P9_OEXEC: open file for execution | ||
159 | * @P9_OTRUNC: truncate file to zero-length before opening it | ||
160 | * @P9_OREXEC: close the file when an exec(2) system call is made | ||
161 | * @P9_ORCLOSE: remove the file when the file is closed | ||
162 | * @P9_OAPPEND: open the file and seek to the end | ||
163 | * @P9_OEXCL: only create a file, do not open it | ||
164 | * | ||
165 | * 9P open modes differ slightly from Posix standard modes. | ||
166 | * In particular, there are extra modes which specify different | ||
167 | * semantic behaviors than may be available on standard Posix | ||
168 | * systems. For example, @P9_OREXEC and @P9_ORCLOSE are modes that | ||
169 | * most likely will not be issued from the Linux VFS client, but may | ||
170 | * be supported by servers. | ||
171 | * | ||
172 | * See Also: http://plan9.bell-labs.com/magic/man2html/2/open | ||
173 | */ | ||
174 | |||
175 | enum p9_open_mode_t { | ||
100 | P9_OREAD = 0x00, | 176 | P9_OREAD = 0x00, |
101 | P9_OWRITE = 0x01, | 177 | P9_OWRITE = 0x01, |
102 | P9_ORDWR = 0x02, | 178 | P9_ORDWR = 0x02, |
103 | P9_OEXEC = 0x03, | 179 | P9_OEXEC = 0x03, |
104 | P9_OEXCL = 0x04, | ||
105 | P9_OTRUNC = 0x10, | 180 | P9_OTRUNC = 0x10, |
106 | P9_OREXEC = 0x20, | 181 | P9_OREXEC = 0x20, |
107 | P9_ORCLOSE = 0x40, | 182 | P9_ORCLOSE = 0x40, |
108 | P9_OAPPEND = 0x80, | 183 | P9_OAPPEND = 0x80, |
109 | }; | 184 | P9_OEXCL = 0x1000, |
110 | 185 | }; | |
111 | /* permissions */ | 186 | |
112 | enum { | 187 | /** |
188 | * enum p9_perm_t - 9P permissions | ||
189 | * @P9_DMDIR: mode bite for directories | ||
190 | * @P9_DMAPPEND: mode bit for is append-only | ||
191 | * @P9_DMEXCL: mode bit for excluse use (only one open handle allowed) | ||
192 | * @P9_DMMOUNT: mode bite for mount points | ||
193 | * @P9_DMAUTH: mode bit for authentication file | ||
194 | * @P9_DMTMP: mode bit for non-backed-up files | ||
195 | * @P9_DMSYMLINK: mode bit for symbolic links (9P2000.u) | ||
196 | * @P9_DMLINK: mode bit for hard-link (9P2000.u) | ||
197 | * @P9_DMDEVICE: mode bit for device files (9P2000.u) | ||
198 | * @P9_DMNAMEDPIPE: mode bit for named pipe (9P2000.u) | ||
199 | * @P9_DMSOCKET: mode bit for socket (9P2000.u) | ||
200 | * @P9_DMSETUID: mode bit for setuid (9P2000.u) | ||
201 | * @P9_DMSETGID: mode bit for setgid (9P2000.u) | ||
202 | * @P9_DMSETVTX: mode bit for sticky bit (9P2000.u) | ||
203 | * | ||
204 | * 9P permissions differ slightly from Posix standard modes. | ||
205 | * | ||
206 | * See Also: http://plan9.bell-labs.com/magic/man2html/2/stat | ||
207 | */ | ||
208 | enum p9_perm_t { | ||
113 | P9_DMDIR = 0x80000000, | 209 | P9_DMDIR = 0x80000000, |
114 | P9_DMAPPEND = 0x40000000, | 210 | P9_DMAPPEND = 0x40000000, |
115 | P9_DMEXCL = 0x20000000, | 211 | P9_DMEXCL = 0x20000000, |
116 | P9_DMMOUNT = 0x10000000, | 212 | P9_DMMOUNT = 0x10000000, |
117 | P9_DMAUTH = 0x08000000, | 213 | P9_DMAUTH = 0x08000000, |
118 | P9_DMTMP = 0x04000000, | 214 | P9_DMTMP = 0x04000000, |
215 | /* 9P2000.u extensions */ | ||
119 | P9_DMSYMLINK = 0x02000000, | 216 | P9_DMSYMLINK = 0x02000000, |
120 | P9_DMLINK = 0x01000000, | 217 | P9_DMLINK = 0x01000000, |
121 | /* 9P2000.u extensions */ | ||
122 | P9_DMDEVICE = 0x00800000, | 218 | P9_DMDEVICE = 0x00800000, |
123 | P9_DMNAMEDPIPE = 0x00200000, | 219 | P9_DMNAMEDPIPE = 0x00200000, |
124 | P9_DMSOCKET = 0x00100000, | 220 | P9_DMSOCKET = 0x00100000, |
@@ -127,8 +223,26 @@ enum { | |||
127 | P9_DMSETVTX = 0x00010000, | 223 | P9_DMSETVTX = 0x00010000, |
128 | }; | 224 | }; |
129 | 225 | ||
130 | /* qid.types */ | 226 | /** |
131 | enum { | 227 | * enum p9_qid_t - QID types |
228 | * @P9_QTDIR: directory | ||
229 | * @P9_QTAPPEND: append-only | ||
230 | * @P9_QTEXCL: excluse use (only one open handle allowed) | ||
231 | * @P9_QTMOUNT: mount points | ||
232 | * @P9_QTAUTH: authentication file | ||
233 | * @P9_QTTMP: non-backed-up files | ||
234 | * @P9_QTSYMLINK: symbolic links (9P2000.u) | ||
235 | * @P9_QTLINK: hard-link (9P2000.u) | ||
236 | * @P9_QTFILE: normal files | ||
237 | * | ||
238 | * QID types are a subset of permissions - they are primarily | ||
239 | * used to differentiate semantics for a file system entity via | ||
240 | * a jump-table. Their value is also the most signifigant 16 bits | ||
241 | * of the permission_t | ||
242 | * | ||
243 | * See Also: http://plan9.bell-labs.com/magic/man2html/2/stat | ||
244 | */ | ||
245 | enum p9_qid_t { | ||
132 | P9_QTDIR = 0x80, | 246 | P9_QTDIR = 0x80, |
133 | P9_QTAPPEND = 0x40, | 247 | P9_QTAPPEND = 0x40, |
134 | P9_QTEXCL = 0x20, | 248 | P9_QTEXCL = 0x20, |
@@ -140,6 +254,7 @@ enum { | |||
140 | P9_QTFILE = 0x00, | 254 | P9_QTFILE = 0x00, |
141 | }; | 255 | }; |
142 | 256 | ||
257 | /* 9P Magic Numbers */ | ||
143 | #define P9_NOTAG (u16)(~0) | 258 | #define P9_NOTAG (u16)(~0) |
144 | #define P9_NOFID (u32)(~0) | 259 | #define P9_NOFID (u32)(~0) |
145 | #define P9_MAXWELEM 16 | 260 | #define P9_MAXWELEM 16 |
@@ -147,19 +262,69 @@ enum { | |||
147 | /* ample room for Twrite/Rread header */ | 262 | /* ample room for Twrite/Rread header */ |
148 | #define P9_IOHDRSZ 24 | 263 | #define P9_IOHDRSZ 24 |
149 | 264 | ||
265 | /** | ||
266 | * struct p9_str - length prefixed string type | ||
267 | * @len: length of the string | ||
268 | * @str: the string | ||
269 | * | ||
270 | * The protocol uses length prefixed strings for all | ||
271 | * string data, so we replicate that for our internal | ||
272 | * string members. | ||
273 | */ | ||
274 | |||
150 | struct p9_str { | 275 | struct p9_str { |
151 | u16 len; | 276 | u16 len; |
152 | char *str; | 277 | char *str; |
153 | }; | 278 | }; |
154 | 279 | ||
155 | /* qids are the unique ID for a file (like an inode */ | 280 | /** |
281 | * struct p9_qid - file system entity information | ||
282 | * @type: 8-bit type &p9_qid_t | ||
283 | * @version: 16-bit monotonically incrementing version number | ||
284 | * @path: 64-bit per-server-unique ID for a file system element | ||
285 | * | ||
286 | * qids are identifiers used by 9P servers to track file system | ||
287 | * entities. The type is used to differentiate semantics for operations | ||
288 | * on the entity (ie. read means something different on a directory than | ||
289 | * on a file). The path provides a server unique index for an entity | ||
290 | * (roughly analogous to an inode number), while the version is updated | ||
291 | * every time a file is modified and can be used to maintain cache | ||
292 | * coherency between clients and serves. | ||
293 | * Servers will often differentiate purely synthetic entities by setting | ||
294 | * their version to 0, signaling that they should never be cached and | ||
295 | * should be accessed synchronously. | ||
296 | * | ||
297 | * See Also://plan9.bell-labs.com/magic/man2html/2/stat | ||
298 | */ | ||
299 | |||
156 | struct p9_qid { | 300 | struct p9_qid { |
157 | u8 type; | 301 | u8 type; |
158 | u32 version; | 302 | u32 version; |
159 | u64 path; | 303 | u64 path; |
160 | }; | 304 | }; |
161 | 305 | ||
162 | /* Plan 9 file metadata (stat) structure */ | 306 | /** |
307 | * struct p9_stat - file system metadata information | ||
308 | * @size: length prefix for this stat structure instance | ||
309 | * @type: the type of the server (equivilent to a major number) | ||
310 | * @dev: the sub-type of the server (equivilent to a minor number) | ||
311 | * @qid: unique id from the server of type &p9_qid | ||
312 | * @mode: Plan 9 format permissions of type &p9_perm_t | ||
313 | * @atime: Last access/read time | ||
314 | * @mtime: Last modify/write time | ||
315 | * @length: file length | ||
316 | * @name: last element of path (aka filename) in type &p9_str | ||
317 | * @uid: owner name in type &p9_str | ||
318 | * @gid: group owner in type &p9_str | ||
319 | * @muid: last modifier in type &p9_str | ||
320 | * @extension: area used to encode extended UNIX support in type &p9_str | ||
321 | * @n_uid: numeric user id of owner (part of 9p2000.u extension) | ||
322 | * @n_gid: numeric group id (part of 9p2000.u extension) | ||
323 | * @n_muid: numeric user id of laster modifier (part of 9p2000.u extension) | ||
324 | * | ||
325 | * See Also: http://plan9.bell-labs.com/magic/man2html/2/stat | ||
326 | */ | ||
327 | |||
163 | struct p9_stat { | 328 | struct p9_stat { |
164 | u16 size; | 329 | u16 size; |
165 | u16 type; | 330 | u16 type; |
@@ -179,10 +344,14 @@ struct p9_stat { | |||
179 | u32 n_muid; /* 9p2000.u extensions */ | 344 | u32 n_muid; /* 9p2000.u extensions */ |
180 | }; | 345 | }; |
181 | 346 | ||
182 | /* file metadata (stat) structure used to create Twstat message | 347 | /* |
183 | The is similar to p9_stat, but the strings don't point to | 348 | * file metadata (stat) structure used to create Twstat message |
184 | the same memory block and should be freed separately | 349 | * The is identical to &p9_stat, but the strings don't point to |
185 | */ | 350 | * the same memory block and should be freed separately |
351 | * | ||
352 | * See Also: http://plan9.bell-labs.com/magic/man2html/2/stat | ||
353 | */ | ||
354 | |||
186 | struct p9_wstat { | 355 | struct p9_wstat { |
187 | u16 size; | 356 | u16 size; |
188 | u16 type; | 357 | u16 type; |
@@ -335,10 +504,20 @@ struct p9_twstat { | |||
335 | struct p9_rwstat { | 504 | struct p9_rwstat { |
336 | }; | 505 | }; |
337 | 506 | ||
338 | /* | 507 | /** |
339 | * fcall is the primary packet structure | 508 | * struct p9_fcall - primary packet structure |
340 | * | 509 | * @size: prefixed length of the structure |
341 | */ | 510 | * @id: protocol operating identifier of type &p9_msg_t |
511 | * @tag: transaction id of the request | ||
512 | * @sdata: payload | ||
513 | * @params: per-operation parameters | ||
514 | * | ||
515 | * &p9_fcall represents the structure for all 9P RPC | ||
516 | * transactions. Requests are packaged into fcalls, and reponses | ||
517 | * must be extracted from them. | ||
518 | * | ||
519 | * See Also: http://plan9.bell-labs.com/magic/man2html/2/fcall | ||
520 | */ | ||
342 | 521 | ||
343 | struct p9_fcall { | 522 | struct p9_fcall { |
344 | u32 size; | 523 | u32 size; |
@@ -416,4 +595,5 @@ int p9_idpool_check(int id, struct p9_idpool *p); | |||
416 | 595 | ||
417 | int p9_error_init(void); | 596 | int p9_error_init(void); |
418 | int p9_errstr2errno(char *, int); | 597 | int p9_errstr2errno(char *, int); |
598 | int p9_trans_fd_init(void); | ||
419 | #endif /* NET_9P_H */ | 599 | #endif /* NET_9P_H */ |
diff --git a/include/net/9p/client.h b/include/net/9p/client.h index e52f93d9ac5f..c936dd14de41 100644 --- a/include/net/9p/client.h +++ b/include/net/9p/client.h | |||
@@ -26,6 +26,23 @@ | |||
26 | #ifndef NET_9P_CLIENT_H | 26 | #ifndef NET_9P_CLIENT_H |
27 | #define NET_9P_CLIENT_H | 27 | #define NET_9P_CLIENT_H |
28 | 28 | ||
29 | /** | ||
30 | * struct p9_client - per client instance state | ||
31 | * @lock: protect @fidlist | ||
32 | * @msize: maximum data size negotiated by protocol | ||
33 | * @dotu: extension flags negotiated by protocol | ||
34 | * @trans_mod: module API instantiated with this client | ||
35 | * @trans: tranport instance state and API | ||
36 | * @conn: connection state information used by trans_fd | ||
37 | * @fidpool: fid handle accounting for session | ||
38 | * @fidlist: List of active fid handles | ||
39 | * | ||
40 | * The client structure is used to keep track of various per-client | ||
41 | * state that has been instantiated. | ||
42 | * | ||
43 | * Bugs: duplicated data and potentially unnecessary elements. | ||
44 | */ | ||
45 | |||
29 | struct p9_client { | 46 | struct p9_client { |
30 | spinlock_t lock; /* protect client structure */ | 47 | spinlock_t lock; /* protect client structure */ |
31 | int msize; | 48 | int msize; |
@@ -38,6 +55,24 @@ struct p9_client { | |||
38 | struct list_head fidlist; | 55 | struct list_head fidlist; |
39 | }; | 56 | }; |
40 | 57 | ||
58 | /** | ||
59 | * struct p9_fid - file system entity handle | ||
60 | * @clnt: back pointer to instantiating &p9_client | ||
61 | * @fid: numeric identifier for this handle | ||
62 | * @mode: current mode of this fid (enum?) | ||
63 | * @qid: the &p9_qid server identifier this handle points to | ||
64 | * @iounit: the server reported maximum transaction size for this file | ||
65 | * @uid: the numeric uid of the local user who owns this handle | ||
66 | * @aux: transport specific information (unused?) | ||
67 | * @rdir_fpos: tracks offset of file position when reading directory contents | ||
68 | * @rdir_pos: (unused?) | ||
69 | * @rdir_fcall: holds response of last directory read request | ||
70 | * @flist: per-client-instance fid tracking | ||
71 | * @dlist: per-dentry fid tracking | ||
72 | * | ||
73 | * TODO: This needs lots of explanation. | ||
74 | */ | ||
75 | |||
41 | struct p9_fid { | 76 | struct p9_fid { |
42 | struct p9_client *clnt; | 77 | struct p9_client *clnt; |
43 | u32 fid; | 78 | u32 fid; |
diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h index d2209ae9d18b..0db3a4038dc0 100644 --- a/include/net/9p/transport.h +++ b/include/net/9p/transport.h | |||
@@ -26,12 +26,40 @@ | |||
26 | #ifndef NET_9P_TRANSPORT_H | 26 | #ifndef NET_9P_TRANSPORT_H |
27 | #define NET_9P_TRANSPORT_H | 27 | #define NET_9P_TRANSPORT_H |
28 | 28 | ||
29 | /** | ||
30 | * enum p9_trans_status - different states of underlying transports | ||
31 | * @Connected: transport is connected and healthy | ||
32 | * @Disconnected: transport has been disconnected | ||
33 | * @Hung: transport is connected by wedged | ||
34 | * | ||
35 | * This enumeration details the various states a transport | ||
36 | * instatiation can be in. | ||
37 | */ | ||
38 | |||
29 | enum p9_trans_status { | 39 | enum p9_trans_status { |
30 | Connected, | 40 | Connected, |
31 | Disconnected, | 41 | Disconnected, |
32 | Hung, | 42 | Hung, |
33 | }; | 43 | }; |
34 | 44 | ||
45 | /** | ||
46 | * struct p9_trans - per-transport state and API | ||
47 | * @status: transport &p9_trans_status | ||
48 | * @msize: negotiated maximum packet size (duplicate from client) | ||
49 | * @extended: negotiated protocol extensions (duplicate from client) | ||
50 | * @priv: transport private data | ||
51 | * @close: member function to disconnect and close the transport | ||
52 | * @rpc: member function to issue a request to the transport | ||
53 | * | ||
54 | * This is the basic API for a transport instance. It is used as | ||
55 | * a handle by the client to issue requests. This interface is currently | ||
56 | * in flux during reorganization. | ||
57 | * | ||
58 | * Bugs: there is lots of duplicated data here and its not clear that | ||
59 | * the member functions need to be per-instance versus per transport | ||
60 | * module. | ||
61 | */ | ||
62 | |||
35 | struct p9_trans { | 63 | struct p9_trans { |
36 | enum p9_trans_status status; | 64 | enum p9_trans_status status; |
37 | int msize; | 65 | int msize; |
@@ -42,6 +70,21 @@ struct p9_trans { | |||
42 | struct p9_fcall **rc); | 70 | struct p9_fcall **rc); |
43 | }; | 71 | }; |
44 | 72 | ||
73 | /** | ||
74 | * struct p9_trans_module - transport module interface | ||
75 | * @list: used to maintain a list of currently available transports | ||
76 | * @name: the human-readable name of the transport | ||
77 | * @maxsize: transport provided maximum packet size | ||
78 | * @def: set if this transport should be considered the default | ||
79 | * @create: member function to create a new connection on this transport | ||
80 | * | ||
81 | * This is the basic API for a transport module which is registered by the | ||
82 | * transport module with the 9P core network module and used by the client | ||
83 | * to instantiate a new connection on a transport. | ||
84 | * | ||
85 | * Bugs: the transport module list isn't protected. | ||
86 | */ | ||
87 | |||
45 | struct p9_trans_module { | 88 | struct p9_trans_module { |
46 | struct list_head list; | 89 | struct list_head list; |
47 | char *name; /* name of transport */ | 90 | char *name; /* name of transport */ |
@@ -53,5 +96,4 @@ struct p9_trans_module { | |||
53 | void v9fs_register_trans(struct p9_trans_module *m); | 96 | void v9fs_register_trans(struct p9_trans_module *m); |
54 | struct p9_trans_module *v9fs_match_trans(const substring_t *name); | 97 | struct p9_trans_module *v9fs_match_trans(const substring_t *name); |
55 | struct p9_trans_module *v9fs_default_trans(void); | 98 | struct p9_trans_module *v9fs_default_trans(void); |
56 | |||
57 | #endif /* NET_9P_TRANSPORT_H */ | 99 | #endif /* NET_9P_TRANSPORT_H */ |