From bd0e35213d635df40a1c6f8b2c91710bc67c6a3e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 20 Nov 2003 18:09:44 +0000 Subject: [PATCH] * msg.cc (msgctl): Raise SIGSYS if call not available. (msgget): Ditto. (msgrcv): Ditto. (msgsnd): Ditto. * sem.cc (semctl): Ditto. (semget): Ditto. (semop): Ditto. * shm.cc (shmat): Ditto. (shmctl): Ditto. (shmget): Ditto. (shmdt): Ditto. --- winsup/cygwin/ChangeLog | 14 ++++++++++++++ winsup/cygwin/msg.cc | 12 ++++++++++++ winsup/cygwin/sem.cc | 9 +++++++++ winsup/cygwin/shm.cc | 12 ++++++++++++ 4 files changed, 47 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 3adbbf015..e070df011 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,17 @@ +2003-11-20 Corinna Vinschen + + * msg.cc (msgctl): Raise SIGSYS if call not available. + (msgget): Ditto. + (msgrcv): Ditto. + (msgsnd): Ditto. + * sem.cc (semctl): Ditto. + (semget): Ditto. + (semop): Ditto. + * shm.cc (shmat): Ditto. + (shmctl): Ditto. + (shmget): Ditto. + (shmdt): Ditto. + 2003-11-19 Corinna Vinschen * cygserver.h (client_request::request_code_t): Add diff --git a/winsup/cygwin/msg.cc b/winsup/cygwin/msg.cc index 368708b1d..b300a133f 100644 --- a/winsup/cygwin/msg.cc +++ b/winsup/cygwin/msg.cc @@ -136,11 +136,14 @@ msgctl (int msqid, int cmd, struct msqid_ds *buf) { syscall_printf ("-1 [%d] = msgctl ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -156,11 +159,14 @@ msgget (key_t key, int msgflg) { syscall_printf ("-1 [%d] = msgget ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -180,11 +186,14 @@ msgrcv (int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) { syscall_printf ("-1 [%d] = msgrcv ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.rcvval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -203,11 +212,14 @@ msgsnd (int msqid, const void *msgp, size_t msgsz, int msgflg) { syscall_printf ("-1 [%d] = msgsnd ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } diff --git a/winsup/cygwin/sem.cc b/winsup/cygwin/sem.cc index a3085d160..dfe28908f 100644 --- a/winsup/cygwin/sem.cc +++ b/winsup/cygwin/sem.cc @@ -115,11 +115,14 @@ semctl (int semid, int semnum, int cmd, ...) { syscall_printf ("-1 [%d] = semctl ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -136,11 +139,14 @@ semget (key_t key, int nsems, int semflg) { syscall_printf ("-1 [%d] = semctl ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -159,11 +165,14 @@ semop (int semid, struct sembuf *sops, size_t nsops) { syscall_printf ("-1 [%d] = semctl ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc index ef3248f4f..bec74ad03 100644 --- a/winsup/cygwin/shm.cc +++ b/winsup/cygwin/shm.cc @@ -204,6 +204,8 @@ shmat (int shmid, const void *shmaddr, int shmflg) UnmapViewOfFile (ptr); delete sph_entry; set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return NULL; } sph_entry->ptr = ptr; @@ -214,6 +216,7 @@ shmat (int shmid, const void *shmaddr, int shmflg) return ptr; #else set_errno (ENOSYS); + raise (SIGSYS); return NULL; #endif } @@ -252,6 +255,8 @@ shmctl (int shmid, int cmd, struct shmid_ds *buf) { syscall_printf ("-1 [%d] = shmctl ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } if (cmd == IPC_RMID) @@ -273,6 +278,7 @@ shmctl (int shmid, int cmd, struct shmid_ds *buf) return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -288,6 +294,8 @@ shmdt (const void *shmaddr) { syscall_printf ("-1 [%d] = shmctl ()", request.error_code ()); set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } shm_attached_list *sph_entry, *sph_next_entry; @@ -306,6 +314,7 @@ shmdt (const void *shmaddr) return request.retval (); #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif } @@ -330,6 +339,8 @@ shmget (key_t key, size_t size, int shmflg) syscall_printf ("-1 [%d] = shmctl ()", request.error_code ()); delete ssh_new_entry; set_errno (request.error_code ()); + if (request.error_code () == ENOSYS) + raise (SIGSYS); return -1; } int shmid = request.retval (); /* Shared mem ID */ @@ -357,6 +368,7 @@ shmget (key_t key, size_t size, int shmflg) return shmid; #else set_errno (ENOSYS); + raise (SIGSYS); return -1; #endif }