destroy added
This commit is contained in:
@@ -33,7 +33,7 @@ class Semaphore {
|
||||
*/
|
||||
explicit Semaphore(unsigned c = 0) : counter(c) {}
|
||||
unsigned counter;
|
||||
|
||||
bool used;
|
||||
/*! \brief Wait for access to the critical area.
|
||||
*
|
||||
* Enter/decrement/wait operation: If the counter is greater than 0, then
|
||||
|
||||
@@ -49,23 +49,38 @@ bool sem_init(Vault &vault, size_t id, uint32_t value) {
|
||||
if (id >= vault.MAX_SEMS) {
|
||||
return false; // out‐of‐range id
|
||||
}
|
||||
if (vault.sems[id].used==1){
|
||||
return false; //already in use
|
||||
}
|
||||
|
||||
vault.sems[id].counter=value;
|
||||
return true;
|
||||
}
|
||||
|
||||
void sem_destroy(Vault &vault, size_t id) {
|
||||
(void)vault;
|
||||
(void)id;
|
||||
bool sem_destroy(Vault &vault, size_t id) {
|
||||
if (id >= vault.MAX_SEMS) {
|
||||
return false; // out‐of‐range id
|
||||
}
|
||||
if (vault.sems[id].used==0){
|
||||
return false; //already in free
|
||||
}
|
||||
|
||||
vault.sems[id].used=0;
|
||||
vault.sems[id].counter=0;
|
||||
return true;
|
||||
}
|
||||
|
||||
void sem_signal(Vault &vault, size_t id) {
|
||||
bool sem_signal(Vault &vault, size_t id) {
|
||||
(void)vault;
|
||||
(void)id;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void sem_wait(Vault &vault, size_t id) {
|
||||
bool sem_wait(Vault &vault, size_t id) {
|
||||
(void)vault;
|
||||
(void)id;
|
||||
return true;
|
||||
}
|
||||
|
||||
void exit(Vault &vault) { (void)vault; }
|
||||
|
||||
@@ -18,9 +18,9 @@ size_t write(Vault &vault, uint32_t id, const void *buffer, size_t size);
|
||||
size_t read(Vault &vault, uint32_t id);
|
||||
void sleep(Vault &vault, size_t ms);
|
||||
bool sem_init(Vault &vault, size_t id, uint32_t value);
|
||||
void sem_destroy(Vault &vault, size_t id);
|
||||
void sem_signal(Vault &vault, size_t id);
|
||||
void sem_wait(Vault &vault, size_t id);
|
||||
bool sem_destroy(Vault &vault, size_t id);
|
||||
bool sem_signal(Vault &vault, size_t id);
|
||||
bool sem_wait(Vault &vault, size_t id);
|
||||
void exit(Vault &vault);
|
||||
void kill(Vault &vault, size_t pid);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user