Skip to content

Commit

Permalink
Minor change
Browse files Browse the repository at this point in the history
  • Loading branch information
djordje200179 committed Aug 25, 2024
1 parent 72719c0 commit b09b3fe
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
4 changes: 3 additions & 1 deletion Software/h/signal.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
#include "common/signals.h"
#include "common/syscalls.h"

static inline void (*signal(int sig, void (*func)(int)))(int) { return __signal_set_handler(sig, func); }
static inline void (*signal(int sig, void (*func)(int)))(int) {
return (void (*)(int))__signal_set_handler(sig, (void (*)(enum __signal))func);
}
static inline int raise(int sig) { __signal_raise(sig); return 0; }

typedef volatile int sig_atomic_t;
Expand Down
14 changes: 7 additions & 7 deletions Software/src/kernel/signals.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
#include "kernel/sync/condition.h"
#include "kernel/sync/scheduler.h"
#include "devices/lcd.h"
#include "common/syscalls.h"
#include <stdio.h>
#include <threads.h>

volatile uint32_t* ksig_addr;

Expand Down Expand Up @@ -52,17 +52,17 @@ struct kmutex requests_mutex;
struct kcond requests_cond;

_Noreturn static int signal_processor(void* arg) {
static mtx_t mutex = &requests_mutex;
static cnd_t cond = &requests_cond;

while (true) {
mtx_lock(&mutex);
__mutex_lock((struct __mutex*)&requests_mutex);
while (head == tail)
cnd_wait(&cond, &mutex);
__condition_wait(
(struct __condition*)&requests_cond,
(struct __mutex*)&requests_mutex
);

enum __signal sig = requests[head];
head = (head + 1) % 10;
mtx_unlock(&mutex);
__mutex_unlock((struct __mutex*)&requests_mutex);

if (handlers[sig])
handlers[sig](sig);
Expand Down

0 comments on commit b09b3fe

Please sign in to comment.