Changeset 26676
- Timestamp:
- 07/29/08 08:03:41 (4 months ago)
- Location:
- haiku/trunk
- Files:
-
- 5 added
- 8 modified
-
headers/posix/sys/ipc.h (modified) (3 diffs)
-
headers/posix/sys/sem.h (added)
-
headers/private/kernel/posix/xsi_semaphore.h (added)
-
headers/private/kernel/thread_types.h (modified) (1 diff)
-
headers/private/system/syscalls.h (modified) (4 diffs)
-
src/system/kernel/main.cpp (modified) (2 diffs)
-
src/system/kernel/posix/Jamfile (modified) (1 diff)
-
src/system/kernel/posix/xsi_semaphore.cpp (added)
-
src/system/kernel/syscalls.cpp (modified) (1 diff)
-
src/system/kernel/team.cpp (modified) (4 diffs)
-
src/system/libroot/posix/sys/Jamfile (modified) (2 diffs)
-
src/system/libroot/posix/sys/ftok.c (added)
-
src/system/libroot/posix/sys/xsi_sem.cpp (added)
Legend:
- Unmodified
- Added
- Removed
-
haiku/trunk/headers/posix/sys/ipc.h
r25663 r26676 7 7 8 8 9 #include <sys/cdefs.h> 9 10 #include <sys/types.h> 10 #error functionality has not yet been implemented11 11 12 12 … … 18 18 /* Control commands for msgctl(), semctl(), and shmctl() */ 19 19 #define IPC_RMID 0 /* remove identifier */ 20 #define IPC_SET 1 21 #define IPC_STAT 2 20 #define IPC_SET 1 /* set options */ 21 #define IPC_STAT 2 /* get options */ 22 22 23 23 /* Private key */ 24 #define IPC_PRIVATE 024 #define IPC_PRIVATE (key_t)0 25 25 26 26 27 27 struct ipc_perm { 28 key_t key; 28 key_t key; /* IPC identifier */ 29 29 uid_t uid; /* owner's user ID */ 30 30 gid_t gid; /* owner's group ID */ … … 35 35 36 36 37 #ifdef __cplusplus 38 extern "C" { 39 #endif 37 __BEGIN_DECLS 40 38 41 39 key_t ftok(const char *path, int id); 42 40 43 #ifdef __cplusplus 44 } 45 #endif 41 __END_DECLS 46 42 47 43 #endif /* _SYS_IPC_H */ -
haiku/trunk/headers/private/kernel/thread_types.h
r25704 r26676 183 183 void *io_context; 184 184 struct realtime_sem_context *realtime_sem_context; 185 int32 xsi_sem_undo_requests; 185 186 sem_id death_sem; // semaphore to wait on for dying threads 186 187 struct list dead_threads; -
haiku/trunk/headers/private/system/syscalls.h
r26119 r26676 31 31 struct stat; 32 32 struct _sem_t; 33 struct sembuf; 34 union semun; 33 35 34 36 struct disk_device_job_progress_info; … … 56 58 57 59 extern status_t _kern_shutdown(bool reboot); 58 extern status_t _kern_get_safemode_option(const char *parameter, char *buffer, size_t *_bufferSize); 60 extern status_t _kern_get_safemode_option(const char *parameter, 61 char *buffer, size_t *_bufferSize); 59 62 60 63 extern ssize_t _kern_wait_for_objects(object_wait_info* infos, int numInfos, 61 64 uint32 flags, bigtime_t timeout); 62 63 65 64 66 /* sem functions */ … … 66 68 extern status_t _kern_delete_sem(sem_id id); 67 69 extern status_t _kern_switch_sem(sem_id releaseSem, sem_id id); 68 extern status_t _kern_switch_sem_etc(sem_id releaseSem, sem_id id, uint32 count,69 uint32 flags, bigtime_t timeout);70 extern status_t _kern_switch_sem_etc(sem_id releaseSem, sem_id id, 71 uint32 count, uint32 flags, bigtime_t timeout); 70 72 extern status_t _kern_acquire_sem(sem_id id); 71 extern status_t _kern_acquire_sem_etc(sem_id id, uint32 count, uint32 flags, bigtime_t timeout); 73 extern status_t _kern_acquire_sem_etc(sem_id id, uint32 count, uint32 flags, 74 bigtime_t timeout); 72 75 extern status_t _kern_release_sem(sem_id id); 73 76 extern status_t _kern_release_sem_etc(sem_id id, uint32 count, uint32 flags); 74 77 extern status_t _kern_get_sem_count(sem_id id, int32* thread_count); 75 extern status_t _kern_get_sem_info(sem_id semaphore, struct sem_info *info, size_t size); 78 extern status_t _kern_get_sem_info(sem_id semaphore, struct sem_info *info, 79 size_t size); 76 80 extern status_t _kern_get_next_sem_info(team_id team, int32 *cookie, 77 81 struct sem_info *info, size_t size); … … 90 94 extern status_t _kern_realtime_sem_wait(sem_id semID, bigtime_t timeout); 91 95 96 /* POSIX XSI semaphore syscalls */ 97 extern int _kern_xsi_semget(key_t key, int numSems, int flags); 98 extern int _kern_xsi_semctl(int semID, int semNumber, int command, 99 union semun* args); 100 extern status_t _kern_xsi_semop(int semID, struct sembuf *semOps, 101 size_t numSemOps); 102 92 103 /* team & thread syscalls */ 93 94 104 extern thread_id _kern_load_image(const char* const* flatArgs, 95 105 size_t flatArgsSize, int32 argCount, int32 envCount, -
haiku/trunk/src/system/kernel/main.cpp
r26625 r26676 38 38 #include <port.h> 39 39 #include <posix/realtime_sem.h> 40 #include <posix/xsi_semaphore.h> 40 41 #include <real_time_clock.h> 41 42 #include <sem.h> … … 175 176 kernel_daemon_init(); 176 177 arch_platform_init_post_thread(&sKernelArgs); 178 TRACE("init posix semaphores\n"); 177 179 realtime_sem_init(); 180 xsi_ipc_init(); 178 181 179 182 TRACE("init VM threads\n"); -
haiku/trunk/src/system/kernel/posix/Jamfile
r26253 r26676 5 5 KernelMergeObject kernel_posix.o : 6 6 realtime_sem.cpp 7 xsi_semaphore.cpp 7 8 8 9 : $(TARGET_KERNEL_PIC_CCFLAGS) -
haiku/trunk/src/system/kernel/syscalls.cpp
r25812 r26676 18 18 #include <thread.h> 19 19 #include <posix/realtime_sem.h> 20 #include <posix/xsi_semaphore.h> 20 21 #include <sem.h> 21 22 #include <port.h> -
haiku/trunk/src/system/kernel/team.cpp
r26622 r26676 32 32 #include <port.h> 33 33 #include <posix/realtime_sem.h> 34 #include <posix/xsi_semaphore.h> 34 35 #include <sem.h> 35 36 #include <syscall_process_info.h> … … 700 701 team->address_space = NULL; 701 702 team->realtime_sem_context = NULL; 703 team->xsi_sem_undo_requests = 0; 702 704 team->thread_list = NULL; 703 705 team->main_thread = NULL; … … 1323 1325 delete_team_user_data(team); 1324 1326 vm_delete_areas(team->address_space); 1327 xsi_sem_undo(team->id, team->xsi_sem_undo_requests); 1325 1328 delete_owned_ports(team->id); 1326 1329 sem_delete_owned_sems(team->id); … … 2339 2342 vfs_free_io_context(team->io_context); 2340 2343 delete_realtime_sem_context(team->realtime_sem_context); 2344 xsi_sem_undo(team->id, team->xsi_sem_undo_requests); 2341 2345 delete_owned_ports(teamID); 2342 2346 sem_delete_owned_sems(teamID); -
haiku/trunk/src/system/libroot/posix/sys/Jamfile
r25486 r26676 8 8 flock.c 9 9 ftime.c 10 ftok.c 10 11 getrusage.c 11 12 gettimeofday.c … … 24 25 utimes.c 25 26 wait.c 27 xsi_sem.cpp 26 28 ;
