Date: Wed, 16 Apr 2008 12:56:50 -0400 From: Jung-uk Kim <jkim@FreeBSD.org> To: freebsd-emulation@FreeBSD.org Subject: [PATCH] Add stubs for Linux 2.6.17 syscalls Message-ID: <200804161256.56633.jkim@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
--Boundary-00=_Y/iBIhPmjHGUUF7 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline The attached patch adds stubs for Linux 2.6.17 syscalls. Even though some syscalls were not in official 2.6.16 kernel (e.g., [gs]et_robust_list() showed up in 2.6.17-rc1), GNU libc started using them for NPTL and FC4 updated 2.6 kernel to 2.6.17 later. If you have any concern or objection, please speak up now. Thanks, Jung-uk Kim --Boundary-00=_Y/iBIhPmjHGUUF7 Content-Type: text/plain; charset="iso-8859-1"; name="dummy-linux-2.6.17.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="dummy-linux-2.6.17.diff" --- sys/amd64/linux32/linux32_dummy.c 8 Apr 2008 09:45:47 -0000 1.10 +++ sys/amd64/linux32/linux32_dummy.c 16 Apr 2008 16:27:16 -0000 @@ -99,6 +99,12 @@ DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); +DUMMY(set_robust_list); +DUMMY(get_robust_list); +DUMMY(splice); +DUMMY(sync_file_range); +DUMMY(tee); +DUMMY(vmsplice); #define DUMMY_XATTR(s) \ int \ --- sys/amd64/linux32/linux32_proto.h 8 Apr 2008 09:51:19 -0000 1.35 +++ sys/amd64/linux32/linux32_proto.h 16 Apr 2008 16:27:18 -0000 @@ -968,6 +968,24 @@ struct linux_unshare_args { register_t dummy; }; +struct linux_set_robust_list_args { + register_t dummy; +}; +struct linux_get_robust_list_args { + register_t dummy; +}; +struct linux_splice_args { + register_t dummy; +}; +struct linux_sync_file_range_args { + register_t dummy; +}; +struct linux_tee_args { + register_t dummy; +}; +struct linux_vmsplice_args { + register_t dummy; +}; #define nosys linux_nosys int linux_fork(struct thread *, struct linux_fork_args *); int linux_open(struct thread *, struct linux_open_args *); @@ -1204,6 +1222,12 @@ int linux_pselect6(struct thread *, struct linux_pselect6_args *); int linux_ppoll(struct thread *, struct linux_ppoll_args *); int linux_unshare(struct thread *, struct linux_unshare_args *); +int linux_set_robust_list(struct thread *, struct linux_set_robust_list_args *); +int linux_get_robust_list(struct thread *, struct linux_get_robust_list_args *); +int linux_splice(struct thread *, struct linux_splice_args *); +int linux_sync_file_range(struct thread *, struct linux_sync_file_range_args *); +int linux_tee(struct thread *, struct linux_tee_args *); +int linux_vmsplice(struct thread *, struct linux_vmsplice_args *); #ifdef COMPAT_43 @@ -1460,6 +1484,12 @@ #define LINUX_SYS_AUE_linux_pselect6 AUE_NULL #define LINUX_SYS_AUE_linux_ppoll AUE_NULL #define LINUX_SYS_AUE_linux_unshare AUE_NULL +#define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_splice AUE_NULL +#define LINUX_SYS_AUE_linux_sync_file_range AUE_NULL +#define LINUX_SYS_AUE_linux_tee AUE_NULL +#define LINUX_SYS_AUE_linux_vmsplice AUE_NULL #undef PAD_ #undef PADL_ --- sys/amd64/linux32/linux32_syscall.h 8 Apr 2008 09:51:19 -0000 1.35 +++ sys/amd64/linux32/linux32_syscall.h 16 Apr 2008 16:27:18 -0000 @@ -283,4 +283,10 @@ #define LINUX_SYS_linux_pselect6 308 #define LINUX_SYS_linux_ppoll 309 #define LINUX_SYS_linux_unshare 310 -#define LINUX_SYS_MAXSYSCALL 311 +#define LINUX_SYS_linux_set_robust_list 311 +#define LINUX_SYS_linux_get_robust_list 312 +#define LINUX_SYS_linux_splice 313 +#define LINUX_SYS_linux_sync_file_range 314 +#define LINUX_SYS_linux_tee 315 +#define LINUX_SYS_linux_vmsplice 316 +#define LINUX_SYS_MAXSYSCALL 317 --- sys/amd64/linux32/linux32_sysent.c 8 Apr 2008 09:51:19 -0000 1.35 +++ sys/amd64/linux32/linux32_sysent.c 16 Apr 2008 16:27:18 -0000 @@ -330,4 +330,10 @@ { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 }, /* 308 = linux_pselect6 */ { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 }, /* 310 = linux_unshare */ + { 0, (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 }, /* 311 = linux_set_robust_list */ + { 0, (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 }, /* 312 = linux_get_robust_list */ + { 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 }, /* 313 = linux_splice */ + { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 }, /* 314 = linux_sync_file_range */ + { 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 }, /* 315 = linux_tee */ + { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0 }, /* 316 = linux_vmsplice */ }; --- sys/amd64/linux32/syscalls.master 8 Apr 2008 09:45:47 -0000 1.32 +++ sys/amd64/linux32/syscalls.master 16 Apr 2008 16:27:19 -0000 @@ -493,3 +493,9 @@ 308 AUE_NULL STD { int linux_pselect6(void); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } +311 AUE_NULL STD { int linux_set_robust_list(void); } +312 AUE_NULL STD { int linux_get_robust_list(void); } +313 AUE_NULL STD { int linux_splice(void); } +314 AUE_NULL STD { int linux_sync_file_range(void); } +315 AUE_NULL STD { int linux_tee(void); } +316 AUE_NULL STD { int linux_vmsplice(void); } --- sys/i386/linux/linux_dummy.c 8 Apr 2008 09:45:48 -0000 1.47 +++ sys/i386/linux/linux_dummy.c 16 Apr 2008 16:27:19 -0000 @@ -90,6 +90,12 @@ DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); +DUMMY(set_robust_list); +DUMMY(get_robust_list); +DUMMY(splice); +DUMMY(sync_file_range); +DUMMY(tee); +DUMMY(vmsplice); #define DUMMY_XATTR(s) \ int \ --- sys/i386/linux/linux_proto.h 8 Apr 2008 09:48:26 -0000 1.97 +++ sys/i386/linux/linux_proto.h 16 Apr 2008 16:27:20 -0000 @@ -987,6 +987,24 @@ struct linux_unshare_args { register_t dummy; }; +struct linux_set_robust_list_args { + register_t dummy; +}; +struct linux_get_robust_list_args { + register_t dummy; +}; +struct linux_splice_args { + register_t dummy; +}; +struct linux_sync_file_range_args { + register_t dummy; +}; +struct linux_tee_args { + register_t dummy; +}; +struct linux_vmsplice_args { + register_t dummy; +}; #define nosys linux_nosys int linux_fork(struct thread *, struct linux_fork_args *); int linux_open(struct thread *, struct linux_open_args *); @@ -1224,6 +1242,12 @@ int linux_pselect6(struct thread *, struct linux_pselect6_args *); int linux_ppoll(struct thread *, struct linux_ppoll_args *); int linux_unshare(struct thread *, struct linux_unshare_args *); +int linux_set_robust_list(struct thread *, struct linux_set_robust_list_args *); +int linux_get_robust_list(struct thread *, struct linux_get_robust_list_args *); +int linux_splice(struct thread *, struct linux_splice_args *); +int linux_sync_file_range(struct thread *, struct linux_sync_file_range_args *); +int linux_tee(struct thread *, struct linux_tee_args *); +int linux_vmsplice(struct thread *, struct linux_vmsplice_args *); #ifdef COMPAT_43 @@ -1481,6 +1505,12 @@ #define LINUX_SYS_AUE_linux_pselect6 AUE_NULL #define LINUX_SYS_AUE_linux_ppoll AUE_NULL #define LINUX_SYS_AUE_linux_unshare AUE_NULL +#define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL +#define LINUX_SYS_AUE_linux_splice AUE_NULL +#define LINUX_SYS_AUE_linux_sync_file_range AUE_NULL +#define LINUX_SYS_AUE_linux_tee AUE_NULL +#define LINUX_SYS_AUE_linux_vmsplice AUE_NULL #undef PAD_ #undef PADL_ --- sys/i386/linux/linux_syscall.h 8 Apr 2008 09:48:26 -0000 1.89 +++ sys/i386/linux/linux_syscall.h 16 Apr 2008 16:27:20 -0000 @@ -290,4 +290,10 @@ #define LINUX_SYS_linux_pselect6 308 #define LINUX_SYS_linux_ppoll 309 #define LINUX_SYS_linux_unshare 310 -#define LINUX_SYS_MAXSYSCALL 311 +#define LINUX_SYS_linux_set_robust_list 311 +#define LINUX_SYS_linux_get_robust_list 312 +#define LINUX_SYS_linux_splice 313 +#define LINUX_SYS_linux_sync_file_range 314 +#define LINUX_SYS_linux_tee 315 +#define LINUX_SYS_linux_vmsplice 316 +#define LINUX_SYS_MAXSYSCALL 317 --- sys/i386/linux/linux_sysent.c 8 Apr 2008 09:48:26 -0000 1.96 +++ sys/i386/linux/linux_sysent.c 16 Apr 2008 16:27:20 -0000 @@ -329,4 +329,10 @@ { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0 }, /* 308 = linux_pselect6 */ { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0 }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0 }, /* 310 = linux_unshare */ + { 0, (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0 }, /* 311 = linux_set_robust_list */ + { 0, (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0 }, /* 312 = linux_get_robust_list */ + { 0, (sy_call_t *)linux_splice, AUE_NULL, NULL, 0, 0 }, /* 313 = linux_splice */ + { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0 }, /* 314 = linux_sync_file_range */ + { 0, (sy_call_t *)linux_tee, AUE_NULL, NULL, 0, 0 }, /* 315 = linux_tee */ + { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0 }, /* 316 = linux_vmsplice */ }; --- sys/i386/linux/syscalls.master 8 Apr 2008 09:45:48 -0000 1.91 +++ sys/i386/linux/syscalls.master 16 Apr 2008 16:27:21 -0000 @@ -503,3 +503,9 @@ 308 AUE_NULL STD { int linux_pselect6(void); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } +311 AUE_NULL STD { int linux_set_robust_list(void); } +312 AUE_NULL STD { int linux_get_robust_list(void); } +313 AUE_NULL STD { int linux_splice(void); } +314 AUE_NULL STD { int linux_sync_file_range(void); } +315 AUE_NULL STD { int linux_tee(void); } +316 AUE_NULL STD { int linux_vmsplice(void); } --Boundary-00=_Y/iBIhPmjHGUUF7--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804161256.56633.jkim>