Skip to contentSkip to conversation

compat code for semtimedop in 2.4?

parisc-linux Carlos O'Donell 1 participant 1 message Jul 8, 2003

lore
Share & tools
lore
#0 lore raw

malcontents,

Checking the dirtiness of my 2.4 tree has reminded that we need some sort of compat for semtimedop? Since we don't have an IPC multiplexor this function call from the glibc side (already written wrapper) calls this syscall. The number was given out by willy, and matches the 2.5 number. Do we need compat code? *Sigh*

Comments welcome!

Cheers,
Carlos.

---

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
diff -u -p -r1.14 sys_parisc.c
@@ -256,3 +256,11 @@ int sys_shmctl_broken(int shmid, int cmd
 	return 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
diff -u -p -r1.27 sys_parisc32.c
@@ -3104,3 +3104,11 @@ asmlinkage long sys32_semctl_broken(int 
 	return 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
diff -u -p -r1.78 syscall.S
@@ -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
diff -u -p -r1.26 unistd.h
@@ -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