diff options
author | Ivan Kokshaysky <ink@jurassic.park.msu.ru> | 2009-01-29 17:25:18 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-29 21:04:44 -0500 |
commit | e5d9a90c36e05dd080704ea58328c00f64facdc1 (patch) | |
tree | e393a9216a5ccab3010e01bc6a3f9cee2cd49164 /arch/alpha/kernel/osf_sys.c | |
parent | 299b4eaa302138426d5a9ecd954de1f565d76c94 (diff) |
alpha: use syscall wrappers
Convert OSF syscalls and add alpha specific SYSCALL_ALIAS() macro.
Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/alpha/kernel/osf_sys.c')
-rw-r--r-- | arch/alpha/kernel/osf_sys.c | 113 |
1 files changed, 50 insertions, 63 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 18a3ea1aac51..ae41f097864b 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
@@ -54,8 +54,7 @@ extern int do_pipe(int *); | |||
54 | * identical to OSF as we don't return 0 on success, but doing otherwise | 54 | * identical to OSF as we don't return 0 on success, but doing otherwise |
55 | * would require changes to libc. Hopefully this is good enough. | 55 | * would require changes to libc. Hopefully this is good enough. |
56 | */ | 56 | */ |
57 | asmlinkage unsigned long | 57 | SYSCALL_DEFINE1(osf_brk, unsigned long, brk) |
58 | osf_brk(unsigned long brk) | ||
59 | { | 58 | { |
60 | unsigned long retval = sys_brk(brk); | 59 | unsigned long retval = sys_brk(brk); |
61 | if (brk && brk != retval) | 60 | if (brk && brk != retval) |
@@ -66,9 +65,9 @@ osf_brk(unsigned long brk) | |||
66 | /* | 65 | /* |
67 | * This is pure guess-work.. | 66 | * This is pure guess-work.. |
68 | */ | 67 | */ |
69 | asmlinkage int | 68 | SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start, |
70 | osf_set_program_attributes(unsigned long text_start, unsigned long text_len, | 69 | unsigned long, text_len, unsigned long, bss_start, |
71 | unsigned long bss_start, unsigned long bss_len) | 70 | unsigned long, bss_len) |
72 | { | 71 | { |
73 | struct mm_struct *mm; | 72 | struct mm_struct *mm; |
74 | 73 | ||
@@ -146,9 +145,9 @@ Efault: | |||
146 | return -EFAULT; | 145 | return -EFAULT; |
147 | } | 146 | } |
148 | 147 | ||
149 | asmlinkage int | 148 | SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd, |
150 | osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent, | 149 | struct osf_dirent __user *, dirent, unsigned int, count, |
151 | unsigned int count, long __user *basep) | 150 | long __user *, basep) |
152 | { | 151 | { |
153 | int error; | 152 | int error; |
154 | struct file *file; | 153 | struct file *file; |
@@ -177,9 +176,9 @@ osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent, | |||
177 | 176 | ||
178 | #undef NAME_OFFSET | 177 | #undef NAME_OFFSET |
179 | 178 | ||
180 | asmlinkage unsigned long | 179 | SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len, |
181 | osf_mmap(unsigned long addr, unsigned long len, unsigned long prot, | 180 | unsigned long, prot, unsigned long, flags, unsigned long, fd, |
182 | unsigned long flags, unsigned long fd, unsigned long off) | 181 | unsigned long, off) |
183 | { | 182 | { |
184 | struct file *file = NULL; | 183 | struct file *file = NULL; |
185 | unsigned long ret = -EBADF; | 184 | unsigned long ret = -EBADF; |
@@ -254,8 +253,8 @@ do_osf_statfs(struct dentry * dentry, struct osf_statfs __user *buffer, | |||
254 | return error; | 253 | return error; |
255 | } | 254 | } |
256 | 255 | ||
257 | asmlinkage int | 256 | SYSCALL_DEFINE3(osf_statfs, char __user *, pathname, |
258 | osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz) | 257 | struct osf_statfs __user *, buffer, unsigned long, bufsiz) |
259 | { | 258 | { |
260 | struct path path; | 259 | struct path path; |
261 | int retval; | 260 | int retval; |
@@ -268,8 +267,8 @@ osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned lon | |||
268 | return retval; | 267 | return retval; |
269 | } | 268 | } |
270 | 269 | ||
271 | asmlinkage int | 270 | SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd, |
272 | osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bufsiz) | 271 | struct osf_statfs __user *, buffer, unsigned long, bufsiz) |
273 | { | 272 | { |
274 | struct file *file; | 273 | struct file *file; |
275 | int retval; | 274 | int retval; |
@@ -368,8 +367,8 @@ osf_procfs_mount(char *dirname, struct procfs_args __user *args, int flags) | |||
368 | return do_mount("", dirname, "proc", flags, NULL); | 367 | return do_mount("", dirname, "proc", flags, NULL); |
369 | } | 368 | } |
370 | 369 | ||
371 | asmlinkage int | 370 | SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path, |
372 | osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data) | 371 | int, flag, void __user *, data) |
373 | { | 372 | { |
374 | int retval = -EINVAL; | 373 | int retval = -EINVAL; |
375 | char *name; | 374 | char *name; |
@@ -399,8 +398,7 @@ osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data) | |||
399 | return retval; | 398 | return retval; |
400 | } | 399 | } |
401 | 400 | ||
402 | asmlinkage int | 401 | SYSCALL_DEFINE1(osf_utsname, char __user *, name) |
403 | osf_utsname(char __user *name) | ||
404 | { | 402 | { |
405 | int error; | 403 | int error; |
406 | 404 | ||
@@ -423,14 +421,12 @@ osf_utsname(char __user *name) | |||
423 | return error; | 421 | return error; |
424 | } | 422 | } |
425 | 423 | ||
426 | asmlinkage unsigned long | 424 | SYSCALL_DEFINE0(getpagesize) |
427 | sys_getpagesize(void) | ||
428 | { | 425 | { |
429 | return PAGE_SIZE; | 426 | return PAGE_SIZE; |
430 | } | 427 | } |
431 | 428 | ||
432 | asmlinkage unsigned long | 429 | SYSCALL_DEFINE0(getdtablesize) |
433 | sys_getdtablesize(void) | ||
434 | { | 430 | { |
435 | return sysctl_nr_open; | 431 | return sysctl_nr_open; |
436 | } | 432 | } |
@@ -438,8 +434,7 @@ sys_getdtablesize(void) | |||
438 | /* | 434 | /* |
439 | * For compatibility with OSF/1 only. Use utsname(2) instead. | 435 | * For compatibility with OSF/1 only. Use utsname(2) instead. |
440 | */ | 436 | */ |
441 | asmlinkage int | 437 | SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen) |
442 | osf_getdomainname(char __user *name, int namelen) | ||
443 | { | 438 | { |
444 | unsigned len; | 439 | unsigned len; |
445 | int i; | 440 | int i; |
@@ -527,8 +522,8 @@ enum pl_code { | |||
527 | PL_DEL = 5, PL_FDEL = 6 | 522 | PL_DEL = 5, PL_FDEL = 6 |
528 | }; | 523 | }; |
529 | 524 | ||
530 | asmlinkage long | 525 | SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code, |
531 | osf_proplist_syscall(enum pl_code code, union pl_args __user *args) | 526 | union pl_args __user *, args) |
532 | { | 527 | { |
533 | long error; | 528 | long error; |
534 | int __user *min_buf_size_ptr; | 529 | int __user *min_buf_size_ptr; |
@@ -567,8 +562,8 @@ osf_proplist_syscall(enum pl_code code, union pl_args __user *args) | |||
567 | return error; | 562 | return error; |
568 | } | 563 | } |
569 | 564 | ||
570 | asmlinkage int | 565 | SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss, |
571 | osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss) | 566 | struct sigstack __user *, uoss) |
572 | { | 567 | { |
573 | unsigned long usp = rdusp(); | 568 | unsigned long usp = rdusp(); |
574 | unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size; | 569 | unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size; |
@@ -608,8 +603,7 @@ osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss) | |||
608 | return error; | 603 | return error; |
609 | } | 604 | } |
610 | 605 | ||
611 | asmlinkage long | 606 | SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count) |
612 | osf_sysinfo(int command, char __user *buf, long count) | ||
613 | { | 607 | { |
614 | char *sysinfo_table[] = { | 608 | char *sysinfo_table[] = { |
615 | utsname()->sysname, | 609 | utsname()->sysname, |
@@ -647,9 +641,8 @@ osf_sysinfo(int command, char __user *buf, long count) | |||
647 | return err; | 641 | return err; |
648 | } | 642 | } |
649 | 643 | ||
650 | asmlinkage unsigned long | 644 | SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer, |
651 | osf_getsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes, | 645 | unsigned long, nbytes, int __user *, start, void __user *, arg) |
652 | int __user *start, void __user *arg) | ||
653 | { | 646 | { |
654 | unsigned long w; | 647 | unsigned long w; |
655 | struct percpu_struct *cpu; | 648 | struct percpu_struct *cpu; |
@@ -705,9 +698,8 @@ osf_getsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes, | |||
705 | return -EOPNOTSUPP; | 698 | return -EOPNOTSUPP; |
706 | } | 699 | } |
707 | 700 | ||
708 | asmlinkage unsigned long | 701 | SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer, |
709 | osf_setsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes, | 702 | unsigned long, nbytes, int __user *, start, void __user *, arg) |
710 | int __user *start, void __user *arg) | ||
711 | { | 703 | { |
712 | switch (op) { | 704 | switch (op) { |
713 | case SSI_IEEE_FP_CONTROL: { | 705 | case SSI_IEEE_FP_CONTROL: { |
@@ -880,8 +872,8 @@ jiffies_to_timeval32(unsigned long jiffies, struct timeval32 *value) | |||
880 | value->tv_sec = jiffies / HZ; | 872 | value->tv_sec = jiffies / HZ; |
881 | } | 873 | } |
882 | 874 | ||
883 | asmlinkage int | 875 | SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv, |
884 | osf_gettimeofday(struct timeval32 __user *tv, struct timezone __user *tz) | 876 | struct timezone __user *, tz) |
885 | { | 877 | { |
886 | if (tv) { | 878 | if (tv) { |
887 | struct timeval ktv; | 879 | struct timeval ktv; |
@@ -896,8 +888,8 @@ osf_gettimeofday(struct timeval32 __user *tv, struct timezone __user *tz) | |||
896 | return 0; | 888 | return 0; |
897 | } | 889 | } |
898 | 890 | ||
899 | asmlinkage int | 891 | SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv, |
900 | osf_settimeofday(struct timeval32 __user *tv, struct timezone __user *tz) | 892 | struct timezone __user *, tz) |
901 | { | 893 | { |
902 | struct timespec kts; | 894 | struct timespec kts; |
903 | struct timezone ktz; | 895 | struct timezone ktz; |
@@ -916,8 +908,7 @@ osf_settimeofday(struct timeval32 __user *tv, struct timezone __user *tz) | |||
916 | return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL); | 908 | return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL); |
917 | } | 909 | } |
918 | 910 | ||
919 | asmlinkage int | 911 | SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it) |
920 | osf_getitimer(int which, struct itimerval32 __user *it) | ||
921 | { | 912 | { |
922 | struct itimerval kit; | 913 | struct itimerval kit; |
923 | int error; | 914 | int error; |
@@ -929,8 +920,8 @@ osf_getitimer(int which, struct itimerval32 __user *it) | |||
929 | return error; | 920 | return error; |
930 | } | 921 | } |
931 | 922 | ||
932 | asmlinkage int | 923 | SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in, |
933 | osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __user *out) | 924 | struct itimerval32 __user *, out) |
934 | { | 925 | { |
935 | struct itimerval kin, kout; | 926 | struct itimerval kin, kout; |
936 | int error; | 927 | int error; |
@@ -952,8 +943,8 @@ osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __use | |||
952 | 943 | ||
953 | } | 944 | } |
954 | 945 | ||
955 | asmlinkage int | 946 | SYSCALL_DEFINE2(osf_utimes, char __user *, filename, |
956 | osf_utimes(char __user *filename, struct timeval32 __user *tvs) | 947 | struct timeval32 __user *, tvs) |
957 | { | 948 | { |
958 | struct timespec tv[2]; | 949 | struct timespec tv[2]; |
959 | 950 | ||
@@ -979,9 +970,8 @@ osf_utimes(char __user *filename, struct timeval32 __user *tvs) | |||
979 | #define MAX_SELECT_SECONDS \ | 970 | #define MAX_SELECT_SECONDS \ |
980 | ((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1) | 971 | ((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1) |
981 | 972 | ||
982 | asmlinkage int | 973 | SYSCALL_DEFINE5(osf_select, int, n, fd_set __user *, inp, fd_set __user *, outp, |
983 | osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, | 974 | fd_set __user *, exp, struct timeval32 __user *, tvp) |
984 | struct timeval32 __user *tvp) | ||
985 | { | 975 | { |
986 | struct timespec end_time, *to = NULL; | 976 | struct timespec end_time, *to = NULL; |
987 | if (tvp) { | 977 | if (tvp) { |
@@ -1026,8 +1016,7 @@ struct rusage32 { | |||
1026 | long ru_nivcsw; /* involuntary " */ | 1016 | long ru_nivcsw; /* involuntary " */ |
1027 | }; | 1017 | }; |
1028 | 1018 | ||
1029 | asmlinkage int | 1019 | SYSCALL_DEFINE2(osf_getrusage, int, who, struct rusage32 __user *, ru) |
1030 | osf_getrusage(int who, struct rusage32 __user *ru) | ||
1031 | { | 1020 | { |
1032 | struct rusage32 r; | 1021 | struct rusage32 r; |
1033 | 1022 | ||
@@ -1053,9 +1042,8 @@ osf_getrusage(int who, struct rusage32 __user *ru) | |||
1053 | return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0; | 1042 | return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0; |
1054 | } | 1043 | } |
1055 | 1044 | ||
1056 | asmlinkage long | 1045 | SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options, |
1057 | osf_wait4(pid_t pid, int __user *ustatus, int options, | 1046 | struct rusage32 __user *, ur) |
1058 | struct rusage32 __user *ur) | ||
1059 | { | 1047 | { |
1060 | struct rusage r; | 1048 | struct rusage r; |
1061 | long ret, err; | 1049 | long ret, err; |
@@ -1101,8 +1089,8 @@ osf_wait4(pid_t pid, int __user *ustatus, int options, | |||
1101 | * seems to be a timeval pointer, and I suspect the second | 1089 | * seems to be a timeval pointer, and I suspect the second |
1102 | * one is the time remaining.. Ho humm.. No documentation. | 1090 | * one is the time remaining.. Ho humm.. No documentation. |
1103 | */ | 1091 | */ |
1104 | asmlinkage int | 1092 | SYSCALL_DEFINE2(osf_usleep_thread, struct timeval32 __user *, sleep, |
1105 | osf_usleep_thread(struct timeval32 __user *sleep, struct timeval32 __user *remain) | 1093 | struct timeval32 __user *, remain) |
1106 | { | 1094 | { |
1107 | struct timeval tmp; | 1095 | struct timeval tmp; |
1108 | unsigned long ticks; | 1096 | unsigned long ticks; |
@@ -1155,8 +1143,7 @@ struct timex32 { | |||
1155 | int :32; int :32; int :32; int :32; | 1143 | int :32; int :32; int :32; int :32; |
1156 | }; | 1144 | }; |
1157 | 1145 | ||
1158 | asmlinkage int | 1146 | SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p) |
1159 | sys_old_adjtimex(struct timex32 __user *txc_p) | ||
1160 | { | 1147 | { |
1161 | struct timex txc; | 1148 | struct timex txc; |
1162 | int ret; | 1149 | int ret; |
@@ -1267,8 +1254,8 @@ osf_fix_iov_len(const struct iovec __user *iov, unsigned long count) | |||
1267 | return 0; | 1254 | return 0; |
1268 | } | 1255 | } |
1269 | 1256 | ||
1270 | asmlinkage ssize_t | 1257 | SYSCALL_DEFINE3(osf_readv, unsigned long, fd, |
1271 | osf_readv(unsigned long fd, const struct iovec __user * vector, unsigned long count) | 1258 | const struct iovec __user *, vector, unsigned long, count) |
1272 | { | 1259 | { |
1273 | if (unlikely(personality(current->personality) == PER_OSF4)) | 1260 | if (unlikely(personality(current->personality) == PER_OSF4)) |
1274 | if (osf_fix_iov_len(vector, count)) | 1261 | if (osf_fix_iov_len(vector, count)) |
@@ -1276,8 +1263,8 @@ osf_readv(unsigned long fd, const struct iovec __user * vector, unsigned long co | |||
1276 | return sys_readv(fd, vector, count); | 1263 | return sys_readv(fd, vector, count); |
1277 | } | 1264 | } |
1278 | 1265 | ||
1279 | asmlinkage ssize_t | 1266 | SYSCALL_DEFINE3(osf_writev, unsigned long, fd, |
1280 | osf_writev(unsigned long fd, const struct iovec __user * vector, unsigned long count) | 1267 | const struct iovec __user *, vector, unsigned long, count) |
1281 | { | 1268 | { |
1282 | if (unlikely(personality(current->personality) == PER_OSF4)) | 1269 | if (unlikely(personality(current->personality) == PER_OSF4)) |
1283 | if (osf_fix_iov_len(vector, count)) | 1270 | if (osf_fix_iov_len(vector, count)) |