2.4 and semtimedop - need kernel compat?
pa,
I think I'm leaving the "filling in" of this to Randolph :) For now it provides enough functionality for glibc to build and be all happy and merry. Wether we strictly need compat code for semtimedop is uknown.
Comments appreciated before checkin.
Willy handed out the new syscall number 228 for semtimedop.
c.
Index: arch/parisc/kernel/sys_parisc.c
===================================================================
RCS file: /var/cvs/linux/arch/parisc/kernel/sys_parisc.c,v retrieving revision 1.14
parisc/kernel/sys_parisc.c +8 -0
@@ -256,3 +256,11 @@ int sys_shmctl_broken(int shmid, int cmdreturn sys_shmctl (shmid, cmd, (struct shmid_ds *)buf); } +/* 2.4 compat code required for IPC calls */ +asmlinkage long sys_semtimedop (int semid,struct sembuf *tsops, +unsigned nsops,const struct timespec *timeout) +{ +/* FIXME: Need to implement compat? */ +return -ENOSYS ; +} +
Index: arch/parisc/kernel/sys_parisc32.c
===================================================================
RCS file: /var/cvs/linux/arch/parisc/kernel/sys_parisc32.c,v retrieving revision 1.27
parisc/kernel/sys_parisc32.c +8 -0
@@ -3104,3 +3104,11 @@ asmlinkage long sys32_semctl_broken(intreturn sys_semctl (semid, semnum, cmd, arg); } +/* 2.4 compat code required for IPC calls */ +asmlinkage long sys32_semtimedop (int semid,struct sembuf *tsops, +unsigned nsops,const struct timespec *timeout) +{ +/* FIXME: Possible 32/64 conversions required */ +/* FIXME: Need to implement compat? */ +return -ENOSYS ; +}
Index: arch/parisc/kernel/syscall.S
===================================================================
RCS file: /var/cvs/linux/arch/parisc/kernel/syscall.S,v retrieving revision 1.78
parisc/kernel/syscall.S +24 -1
@@ -604,8 +604,31 @@ sys_call_table: #endif ENTRY_SAME(gettid) ENTRY_SAME(readahead) - ENTRY_SAME(tkill) + ENTRY_SAME(tkill) /* 208 */ + /* COMPAT semtimedop call requires the same syscall number + across kernel versions. */ + + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) /* 210 */ + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) /* 220 */ + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_SAME(ni_syscall) + ENTRY_DIFF(semtimedop) /* 228 */ .end /* Make sure nothing else is placed on this page */
Index: include/asm-parisc/unistd.h
===================================================================
RCS file: /var/cvs/linux/include/asm-parisc/unistd.h,v retrieving revision 1.26
asm-parisc/unistd.h +2 -0
@@ -702,6 +702,8 @@#define __NR_readahead (__NR_Linux + 207)#define __NR_tkill (__NR_Linux + 208) +#define __NR_semtimedop (__NR_Linux + 228) +#define __NR_Linux_syscalls 208#define HPUX_GATEWAY_ADDR 0xC0000004
Quoted 7 lines · Carlos O'Donell
pa,
I think I'm leaving the "filling in" of this to Randolph :) For now it provides enough functionality for glibc to build and be all happy and merry. Wether we strictly need compat code for semtimedop is uknown.
Uh, you don't need to do anything. If you call an unassigned syscall, you get -ENOSYS.
Signature · 3 lines
"It's not Hollywood. War is real, war is primarily not about defeat or victory, it is about death. I've seen thousands and thousands of dead bodies. Do you think I want to have an academic debate on this subject?" -- Robert Fisk
Quoted 2 lines
Uh, you don't need to do anything. If you call an unassigned syscall, you get
-ENOSYS.
The idea was that it might be able to provide the required compat functionality in 2.4. If we feel it's not possible then we can eliminate all the entries in sys_parisc.c/sys32_parisc.c and leave the syscall as ENTRY_SAME(nisyscall) in entry.S.
The glibc side of the code is done.
c.