* 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
+11 -6
View File
@@ -28,7 +28,14 @@
#define F_TEST 3 /* test a section for locks by other processes */ #define F_TEST 3 /* test a section for locks by other processes */
/* POSIX version support */ /* 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 */ /* pathconf() constants */
#define _PC_CHOWN_RESTRICTED 1 #define _PC_CHOWN_RESTRICTED 1
@@ -40,11 +47,6 @@
#define _PC_PIPE_BUF 7 #define _PC_PIPE_BUF 7
#define _PC_VDISABLE 8 #define _PC_VDISABLE 8
#define _PC_LINK_MAX 25 #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 */ /* sysconf() constants */
#define _SC_ARG_MAX 15 #define _SC_ARG_MAX 15
@@ -61,6 +63,9 @@
#define _SC_GETPW_R_SIZE_MAX 26 #define _SC_GETPW_R_SIZE_MAX 26
#define _SC_PAGE_SIZE 27 #define _SC_PAGE_SIZE 27
#define _SC_PAGESIZE _SC_PAGE_SIZE #define _SC_PAGESIZE _SC_PAGE_SIZE
#define _SC_SEM_NSEMS_MAX 28
#define _SC_SEM_VALUE_MAX 29
#define _SC_SEMAPHORES 30
/* lseek() constants */ /* lseek() constants */
#ifndef SEEK_SET #ifndef SEEK_SET
+6 -1
View File
@@ -15,6 +15,11 @@
struct realtime_sem_context; 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 __BEGIN_DECLS
void realtime_sem_init(); 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* clone_realtime_sem_context(
struct realtime_sem_context* 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, mode_t mode, uint32 semCount, sem_t* userSem,
sem_t** _usedUserSem); sem_t** _usedUserSem);
status_t _user_realtime_sem_close(sem_id semID, sem_t** _deleteUserSem); status_t _user_realtime_sem_close(sem_id semID, sem_t** _deleteUserSem);
+11 -9
View File
@@ -15,6 +15,7 @@
#include <SupportDefs.h> #include <SupportDefs.h>
#include <libroot_private.h> #include <libroot_private.h>
#include <posix/realtime_sem.h>
#include <user_group.h> #include <user_group.h>
@@ -61,6 +62,12 @@ sysconf(int name)
return MAX_PASSWD_BUFFER_SIZE; return MAX_PASSWD_BUFFER_SIZE;
case _SC_PAGE_SIZE: case _SC_PAGE_SIZE:
return B_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; return -1;
@@ -71,10 +78,8 @@ long
fpathconf(int fd, int name) fpathconf(int fd, int name)
{ {
switch (name) { switch (name) {
// ToDo: out of what stupidity have those been defined differently?
case _PC_CHOWN_RESTRICTED: case _PC_CHOWN_RESTRICTED:
case _POSIX_CHOWN_RESTRICTED: return _POSIX_CHOWN_RESTRICTED;
return 1;
case _PC_MAX_CANON: case _PC_MAX_CANON:
return MAX_CANON; return MAX_CANON;
@@ -86,8 +91,7 @@ fpathconf(int fd, int name)
return NAME_MAX; return NAME_MAX;
case _PC_NO_TRUNC: case _PC_NO_TRUNC:
case _POSIX_NO_TRUNC: return _POSIX_NO_TRUNC;
return 0;
case _PC_PATH_MAX: case _PC_PATH_MAX:
return PATH_MAX; return PATH_MAX;
@@ -98,10 +102,8 @@ fpathconf(int fd, int name)
case _PC_LINK_MAX: case _PC_LINK_MAX:
return LINK_MAX; return LINK_MAX;
// _PC_VDISABLE case _PC_VDISABLE:
// _POSIX_VDISABLE return _POSIX_VDISABLE;
// _POSIX_JOB_CONTROL
// _POSIX_SAVED_IDS
} }
return -1; return -1;