* Fixed some misunderstanding regarding the _POSIX_* macros. They are

not supposed to be passed to pathconf() or sysconf().
* Added POSIX semaphore related macros.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25361 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2008-05-08 01:27:31 +00:00
parent 6806f7f873
commit 01b1098795
3 changed files with 28 additions and 16 deletions

View File

@ -28,7 +28,14 @@
#define F_TEST 3 /* test a section for locks by other processes */
/* POSIX version support */
#define _POSIX_VERSION (199009L)
#define _POSIX_VERSION (199009L) /* TODO: Update! */
#define _POSIX_CHOWN_RESTRICTED 1
#define _POSIX_JOB_CONTROL 1
#define _POSIX_NO_TRUNC 0
#define _POSIX_SAVED_IDS 1
#define _POSIX_VDISABLE ((char)-2) /* TODO: Check this! */
#define _POSIX_SEMAPHORES (200112L)
/* pathconf() constants */
#define _PC_CHOWN_RESTRICTED 1
@ -40,11 +47,6 @@
#define _PC_PIPE_BUF 7
#define _PC_VDISABLE 8
#define _PC_LINK_MAX 25
#define _POSIX_CHOWN_RESTRICTED 9
#define _POSIX_JOB_CONTROL 10
#define _POSIX_NO_TRUNC 11
#define _POSIX_SAVED_IDS 12
#define _POSIX_VDISABLE ((cc_t) - 2)
/* sysconf() constants */
#define _SC_ARG_MAX 15
@ -61,6 +63,9 @@
#define _SC_GETPW_R_SIZE_MAX 26
#define _SC_PAGE_SIZE 27
#define _SC_PAGESIZE _SC_PAGE_SIZE
#define _SC_SEM_NSEMS_MAX 28
#define _SC_SEM_VALUE_MAX 29
#define _SC_SEMAPHORES 30
/* lseek() constants */
#ifndef SEEK_SET

View File

@ -15,6 +15,11 @@
struct realtime_sem_context;
#define MAX_POSIX_SEMS_PER_TEAM 128
#define MAX_POSIX_SEMS 1024
#define MAX_POSIX_SEM_VALUE INT_MAX
__BEGIN_DECLS
void realtime_sem_init();
@ -22,7 +27,7 @@ void delete_realtime_sem_context(struct realtime_sem_context* context);
struct realtime_sem_context* clone_realtime_sem_context(
struct realtime_sem_context* context);
status_t _user_realtime_sem_open(const char* name, int openFlags,
status_t _user_realtime_sem_open(const char* name, int openFlagsOrShared,
mode_t mode, uint32 semCount, sem_t* userSem,
sem_t** _usedUserSem);
status_t _user_realtime_sem_close(sem_id semID, sem_t** _deleteUserSem);

View File

@ -15,6 +15,7 @@
#include <SupportDefs.h>
#include <libroot_private.h>
#include <posix/realtime_sem.h>
#include <user_group.h>
@ -61,6 +62,12 @@ sysconf(int name)
return MAX_PASSWD_BUFFER_SIZE;
case _SC_PAGE_SIZE:
return B_PAGE_SIZE;
case _SC_SEM_NSEMS_MAX:
return MAX_POSIX_SEMS;
case _SC_SEM_VALUE_MAX:
return MAX_POSIX_SEM_VALUE;
case _SC_SEMAPHORES:
return _POSIX_SEMAPHORES;
}
return -1;
@ -71,10 +78,8 @@ long
fpathconf(int fd, int name)
{
switch (name) {
// ToDo: out of what stupidity have those been defined differently?
case _PC_CHOWN_RESTRICTED:
case _POSIX_CHOWN_RESTRICTED:
return 1;
return _POSIX_CHOWN_RESTRICTED;
case _PC_MAX_CANON:
return MAX_CANON;
@ -86,8 +91,7 @@ fpathconf(int fd, int name)
return NAME_MAX;
case _PC_NO_TRUNC:
case _POSIX_NO_TRUNC:
return 0;
return _POSIX_NO_TRUNC;
case _PC_PATH_MAX:
return PATH_MAX;
@ -98,10 +102,8 @@ fpathconf(int fd, int name)
case _PC_LINK_MAX:
return LINK_MAX;
// _PC_VDISABLE
// _POSIX_VDISABLE
// _POSIX_JOB_CONTROL
// _POSIX_SAVED_IDS
case _PC_VDISABLE:
return _POSIX_VDISABLE;
}
return -1;