* 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:
+11
-6
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user