UbixOS V2 2.0

sem.c
Go to the documentation of this file.
1 /*-
2 * Copyright (c) 2002-2018 The UbixOS Project.
3 * All rights reserved.
4 *
5 * This was developed by Christopher W. Olsen for the UbixOS Project.
6 *
7 * Redistribution and use in source and binary forms, with or without modification, are permitted
8 * provided that the following conditions are met:
9 *
10 * 1) Redistributions of source code must retain the above copyright notice, this list of
11 * conditions, the following disclaimer and the list of authors.
12 * 2) Redistributions in binary form must reproduce the above copyright notice, this list of
13 * conditions, the following disclaimer and the list of authors in the documentation and/or
14 * other materials provided with the distribution.
15 * 3) Neither the name of the UbixOS Project nor the names of its contributors may be used to
16 * endorse or promote products derived from this software without specific prior written
17 * permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
20 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
24 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #include <ubixos/sem.h>
30 #include <sys/types.h>
31 #include <ubixos/errno.h>
32 #include <ubixos/time.h>
33 #include <ubixos/kpanic.h>
34 #include <lib/kmalloc.h>
35
36 int sem_close(semID_t id) {
37 return(0);
38 }
39
40 int sem_post(semID_t id) {
41 return(0);
42 }
43
44 int sem_wait(semID_t id) {
45 return(0);
46 }
47
48 int sem_trywait(semID_t id) {
49 return(0);
50 }
51
52 int sem_timedwait(semID_t id, const struct timespec *ts) {
53 return(0);
54 }
55
56 err_t sem_init(sys_sem_t **sem, uint8_t count) {
57 sys_sem_t *newSem = 0x0;
58
59 if (*sem != 0) {
60 //kpanic("UH OH!");
61 kprintf("UH OH!");
62 }
63
64 newSem = kmalloc(sizeof(struct sys_sem));
65 newSem->signaled = count;
66
67 ubthread_cond_init(&(newSem->cond), NULL);
68 ubthread_mutex_init(&(newSem->mutex), NULL);
69
70 *sem = newSem;
71
72 return (ENOERR);
73 }
74
75 int sem_open(semID_t *id, const char *name, int oflag, mode_t mode, unsigned int value) {
76 return(0);
77 }
78
79 int sem_unlink(const char *name) {
80 return(0);
81 }
82
83 int sem_getvalue(semID_t id, int *val) {
84 return(0);
85 }
86
87 err_t sem_destroy(sys_sem_t **sem) {
88 if (*sem == NULL)
89 return (EINVAL);
90
91 sys_sem_t *d_sem = *sem;
92
93 ubthread_cond_destroy(&(d_sem->cond));
94 ubthread_mutex_destroy(&(d_sem->mutex));
95
96 kfree(sem);
97 *sem = 0x0;
98
99 return (ENOERR);
100 }
101
sys_sem::mutex
ubthread_mutex_t mutex
Definition: sem.h:39
sem.h
ubthread_cond_destroy
int ubthread_cond_destroy(ubthread_cond_t *cond)
Definition: ubthread.c:71
kfree
void kfree(void *baseAddr)
Definition: kmalloc.c:342
sem_unlink
int sem_unlink(const char *name)
Definition: sem.c:79
sys_sem::signaled
uint32_t signaled
Definition: sem.h:37
types.h
ubthread_mutex_init
int ubthread_mutex_init(ubthread_mutex_t *mutex, const uInt32 attr)
sys_sem
Definition: sem.h:36
sem_timedwait
int sem_timedwait(semID_t id, const struct timespec *ts)
Definition: sem.c:52
sem_wait
int sem_wait(semID_t id)
Definition: sem.c:44
kpanic.h
mode_t
__mode_t mode_t
Definition: descrip.h:44
time.h
sem_close
int sem_close(semID_t id)
Definition: sem.c:36
sys_sem::cond
ubthread_cond_t cond
Definition: sem.h:38
sem_trywait
int sem_trywait(semID_t id)
Definition: sem.c:48
err_t
s8_t err_t
Definition: err.h:57
name
const char * name
Definition: pci.c:37
ubthread_mutex_destroy
int ubthread_mutex_destroy(ubthread_mutex_t *mutex)
Definition: ubthread.c:77
sem_init
err_t sem_init(sys_sem_t **sem, uint8_t count)
Definition: sem.c:56
kmalloc
void * kmalloc(uInt32 len)
Definition: kmalloc.c:241
ubthread_cond_init
int ubthread_cond_init(ubthread_cond_t *cond, const uInt32 attr)
sem_destroy
err_t sem_destroy(sys_sem_t **sem)
Definition: sem.c:87
sem_post
int sem_post(semID_t id)
Definition: sem.c:40
ENOERR
#define ENOERR
Definition: errno.h:36
uint8_t
__uint8_t uint8_t
Definition: types.h:44
timespec
Definition: _timespec.h:11
kprintf
int kprintf(const char *,...)
Definition: kprintf.c:259
sem_getvalue
int sem_getvalue(semID_t id, int *val)
Definition: sem.c:83
sem_open
int sem_open(semID_t *id, const char *name, int oflag, mode_t mode, unsigned int value)
Definition: sem.c:75
errno.h
kmalloc.h
EINVAL
#define EINVAL
Definition: errno.h:55
semID_t
uint32_t semID_t
Definition: sem.h:44
NULL
#define NULL
Definition: fat_string.h:17