[uClibc] semctl's last argument

Atsushi Nemoto anemo at mba.ocn.ne.jp
Tue Sep 28 12:27:36 UTC 2004


>>>>> On Tue, 28 Sep 2004 13:29:59 +0200, "Joakim Tjernlund" <joakim.tjernlund at lumentis.se> said:
joakim> hmm, I can't find where __NR_semctl is defined. Is it defined at all?

__NR_semctl is defined in kernel header on some archs.

include/asm-alpha/unistd.h:#define __NR_semctl		204
include/asm-ia64/unistd.h:#define __NR_semctl			1108
include/asm-mips/unistd.h:#define __NR_semctl			(__NR_Linux +  64)
include/asm-mips/unistd.h:#define __NR_semctl			(__NR_Linux +  64)
include/asm-parisc/unistd.h:#define __NR_semctl             (__NR_Linux + 187)
include/asm-sh64/unistd.h:#define __NR_semctl		239
include/asm-x86_64/unistd.h:#define __NR_semctl                             66

joakim> Can't you write:
joakim>   static inline _syscall4(int, __semctl, int, semid, int, semnum, int, cmd, union semun, arg);
joakim>   return __semctl(semid, semnum, cmd, arg);
joakim> instead?

The _syscallN macro casts its argument to long (or something integer).
Gcc will complain if you cast an union variable to long directly.

---
Atsushi Nemoto



More information about the uClibc mailing list