1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9 * Description: implements the named semaphores API in prsemipc.h
10 * for classic NSPR. If _PR_HAVE_NAMED_SEMAPHORES is not defined,
11 * the named semaphore functions all fail with the error code
12 * PR_NOT_IMPLEMENTED_ERROR.
19 # error "This file should not be compiled for the pthreads version"
23 # ifndef _PR_HAVE_NAMED_SEMAPHORES
25 PRSem
* _PR_MD_OPEN_SEMAPHORE(const char* osname
, PRIntn flags
, PRIntn mode
,
27 PR_SetError(PR_NOT_IMPLEMENTED_ERROR
, 0);
31 PRStatus
_PR_MD_WAIT_SEMAPHORE(PRSem
* sem
) {
32 PR_SetError(PR_NOT_IMPLEMENTED_ERROR
, 0);
36 PRStatus
_PR_MD_POST_SEMAPHORE(PRSem
* sem
) {
37 PR_SetError(PR_NOT_IMPLEMENTED_ERROR
, 0);
41 PRStatus
_PR_MD_CLOSE_SEMAPHORE(PRSem
* sem
) {
42 PR_SetError(PR_NOT_IMPLEMENTED_ERROR
, 0);
46 PRStatus
_PR_MD_DELETE_SEMAPHORE(const char* osname
) {
47 PR_SetError(PR_NOT_IMPLEMENTED_ERROR
, 0);
51 # endif /* !_PR_HAVE_NAMED_SEMAPHORES */
54 PR_OpenSemaphore(const char* name
, PRIntn flags
, PRIntn mode
, PRUintn value
) {
55 char osname
[PR_IPC_NAME_SIZE
];
57 if (!_pr_initialized
) {
58 _PR_ImplicitInitialization();
60 if (_PR_MakeNativeIPCName(name
, osname
, sizeof(osname
), _PRIPCSem
) ==
64 return _PR_MD_OPEN_SEMAPHORE(osname
, flags
, mode
, value
);
67 PR_IMPLEMENT(PRStatus
) PR_WaitSemaphore(PRSem
* sem
) {
68 return _PR_MD_WAIT_SEMAPHORE(sem
);
71 PR_IMPLEMENT(PRStatus
) PR_PostSemaphore(PRSem
* sem
) {
72 return _PR_MD_POST_SEMAPHORE(sem
);
75 PR_IMPLEMENT(PRStatus
) PR_CloseSemaphore(PRSem
* sem
) {
76 return _PR_MD_CLOSE_SEMAPHORE(sem
);
79 PR_IMPLEMENT(PRStatus
) PR_DeleteSemaphore(const char* name
) {
80 char osname
[PR_IPC_NAME_SIZE
];
82 if (!_pr_initialized
) {
83 _PR_ImplicitInitialization();
85 if (_PR_MakeNativeIPCName(name
, osname
, sizeof(osname
), _PRIPCSem
) ==
89 return _PR_MD_DELETE_SEMAPHORE(osname
);
92 #endif /* _PR_PTHREADS */