CS350 COS
COS
Loading...
Searching...
No Matches
cv.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Ali Mashtizadeh
3 * All rights reserved.
4 */
5
6#include <stdbool.h>
7#include <stdint.h>
8#include <string.h>
9
10#include <sys/cdefs.h>
11#include <sys/kassert.h>
12#include <sys/kconfig.h>
13#include <sys/kdebug.h>
14#include <sys/kmem.h>
15#include <sys/mp.h>
16#include <sys/queue.h>
17#include <sys/thread.h>
18#include <sys/spinlock.h>
19#include <sys/waitchannel.h>
20#include <sys/mutex.h>
21#include <sys/cv.h>
22#include <errno.h>
23
24void
25CV_Init(CV *cv, const char *name)
26{
27 WaitChannel_Init(&cv->chan, name);
28
29 return;
30}
31
32void
34{
36
37 return;
38}
39
45void
46CV_Wait(CV *cv, Mutex *mtx)
47{
48 /* Do not go to sleep holding a spinlock! */
49 ASSERT(Critical_Level() == 0);
50 /* XXXFILLMEIN */
51}
52
58void
60{
61 /* XXXFILLMEIN */
62}
63
69void
71{
72 /* XXXFILLMEIN */
73}
74
uint32_t Critical_Level()
Definition: critical.c:45
void CV_Broadcast(CV *cv)
Definition: cv.c:70
void CV_Signal(CV *cv)
Definition: cv.c:59
void CV_Destroy(CV *cv)
Definition: cv.c:33
void CV_Wait(CV *cv, Mutex *mtx)
Definition: cv.c:46
void CV_Init(CV *cv, const char *name)
Definition: cv.c:25
WaitChannel chan
Definition: cv.h:6
Definition: cv.h:5
#define ASSERT(_x)
Definition: kassert.h:8
Definition: mutex.h:8
void WaitChannel_Init(WaitChannel *wc, const char *name)
Definition: waitchannel.c:28
void WaitChannel_Destroy(WaitChannel *wc)
Definition: waitchannel.c:40