[uClibc] semctl's last argument

Joakim Tjernlund joakim.tjernlund at lumentis.se
Tue Sep 28 11:29:59 UTC 2004


> Here is a patch.
> 
> --- uClibc.org/libc/misc/sysvipc/sem.c	Thu Jan 22 08:27:39 2004
> +++ uClibc/libc/misc/sysvipc/sem.c	Mon Sep 27 17:54:29 2004
> @@ -38,7 +38,7 @@
>  
>  #ifdef __NR_semctl
>  #define __NR___semctl __NR_semctl
> -static inline _syscall4(int, __semctl, int, semid, int, semnum, int, cmd, union semun *, arg);
> +static inline _syscall4(int, __semctl, int, semid, int, semnum, int, cmd, void *, arg);
>  #endif
>  
>  int semctl(int semid, int semnum, int cmd, ...)
> @@ -51,7 +51,7 @@
>      arg = va_arg (ap, union semun);
>      va_end (ap);
>  #ifdef __NR_semctl
> -    return __semctl(semid, semnum, cmd, &arg);
> +    return __semctl(semid, semnum, cmd, arg.__pad);
>  #else
>      return __syscall_ipc(IPCOP_semctl, semid, semnum, cmd, &arg);
>  #endif

hmm, I can't find where __NR_semctl is defined. Is it defined at all?
Can't you write:
  static inline _syscall4(int, __semctl, int, semid, int, semnum, int, cmd, union semun, arg);
  return __semctl(semid, semnum, cmd, arg);
instead?



More information about the uClibc mailing list