From 4cd53dec66ed20ba46ef209ec2fa41f5f6249567 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sat, 12 Apr 2008 20:17:56 +0200 Subject: [PATCH] Replace ipc error codes by system error codes. --- error.h | 10 +--------- ipc.c | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/error.h b/error.h index 300b54e4..bbe72bdc 100644 --- a/error.h +++ b/error.h @@ -27,6 +27,7 @@ DEFINE_ERRLIST_OBJECT_ENUM; #define RECV_ERRORS #define SEND_COMMON_ERRORS #define STDOUT_ERRORS +#define IPC_ERRORS extern const char **para_errlist[]; @@ -342,15 +343,6 @@ extern const char **para_errlist[]; PARA_ERROR(BAD_USER, "you don't exist. Go away."), \ -#define IPC_ERRORS \ - PARA_ERROR(SEM_GET, "failed to create semaphore"), \ - PARA_ERROR(SEM_REMOVE, "can not remove semaphore"), \ - PARA_ERROR(SHM_GET, "failed to allocate shared memory area"), \ - PARA_ERROR(SHM_DESTROY, "failed to destroy shared memory area"), \ - PARA_ERROR(SHM_ATTACH, "can not attach shared memory area"), \ - PARA_ERROR(SHM_DETACH, "can not detach shared memory area"), \ - - #define DCCP_RECV_ERRORS \ PARA_ERROR(DCCP_OVERRUN, "dccp output buffer buffer overrun"), \ diff --git a/ipc.c b/ipc.c index 37d30715..cf8a8989 100644 --- a/ipc.c +++ b/ipc.c @@ -16,7 +16,7 @@ /** * Define a new mutex. * - * \return The identifier for the new mutex on success, \a -E_SEM_GET + * \return The identifier for the new mutex on success, a negative error code * on errors. * * \sa semget(2). @@ -24,7 +24,7 @@ int mutex_new(void) { int ret = semget(IPC_PRIVATE, 1, IPC_CREAT | 0666); - return ret < 0? -E_SEM_GET : ret; + return ret < 0? -ERRNO_TO_PARA_ERROR(errno) : ret; } /** @@ -32,14 +32,14 @@ int mutex_new(void) * * \param id The identifier of the mutex to be destroyed. * - * \return Positive on success, \a -E_SEM_REMOVE on errors. + * \return Standard. * * \sa semctl(2) */ int mutex_destroy(int id) { int ret = semctl(id, 0, IPC_RMID); - return ret < 0? -E_SEM_REMOVE : 1; + return ret < 0? -ERRNO_TO_PARA_ERROR(errno) : 1; } static void para_semop(int id, struct sembuf *sops, int num) @@ -49,7 +49,7 @@ static void para_semop(int id, struct sembuf *sops, int num) return; } while (errno == EINTR); if (errno == EIDRM) { - PARA_NOTICE_LOG("semaphore set %d was removed\n", id); + PARA_CRIT_LOG("semaphore set %d was removed\n", id); return; } PARA_EMERG_LOG("fatal semop error %s: pid %d\n", strerror(errno), @@ -109,14 +109,15 @@ void mutex_unlock(int id) * * \param size The size of the shared memory area to create. * - * \return The id of the shared memory areay on success, \a -E_SHM_GET on errors. + * \return The id of the shared memory array on success, a negative error + * code on errors. * * \sa shmget(2). */ int shm_new(size_t size) { int ret = shmget(IPC_PRIVATE, size, IPC_CREAT | IPC_EXCL | 0600); - return ret < 0 ? -E_SHM_GET : ret; + return ret < 0 ? -ERRNO_TO_PARA_ERROR(errno) : ret; } /** @@ -125,7 +126,7 @@ int shm_new(size_t size) * \param id The shared memory identifier. * * \return The return value of the underlying shmctl() call on success, - * \a -E_SHM_DESTROY on errors. + * a negative error code on errors. * * \sa shmctl(2). */ @@ -133,28 +134,27 @@ int shm_destroy(int id) { struct shmid_ds shm_desc; int ret = shmctl(id, IPC_RMID, &shm_desc); - return ret < 0? -E_SHM_DESTROY : ret; + return ret < 0? -ERRNO_TO_PARA_ERROR(errno) : ret; } /** * Attach a shared memory segment. * * \param id The identifier of the shared memory segment to attach. - * \param mode either ATTACH_RO (read only) or ATTACH_RW (read/write). - * \param result points to the attached area just attached. + * \param mode Either ATTACH_RO (read only) or ATTACH_RW (read/write). + * \param result Points to the attached area just attached on success. * - * \return positive on success, \a -E_SHM_ATTACH on errors. + * \return Standard. * * \sa shmat(2). */ int shm_attach(int id, enum shm_attach_mode mode, void **result) { - if (mode == ATTACH_RW) { + if (mode == ATTACH_RW) *result = shmat(id, NULL, 0); - return *result? 1 : -E_SHM_ATTACH; - } - *result = shmat(id, NULL, SHM_RDONLY); - return *result? 1 : -E_SHM_ATTACH; + else + *result = shmat(id, NULL, SHM_RDONLY); + return *result == (void *) -1? -ERRNO_TO_PARA_ERROR(errno) : 1; } /** @@ -162,12 +162,12 @@ int shm_attach(int id, enum shm_attach_mode mode, void **result) * * \param addr The address of the attached segment. * - * \return Positive on success, \a -E_SHM_DETACH on errors. + * \return Standard. * * \sa shmdt(2). */ int shm_detach(void *addr) { int ret = shmdt(addr); - return ret < 0? -E_SHM_DETACH : 1; + return ret < 0? -ERRNO_TO_PARA_ERROR(errno) : 1; } -- 2.39.5