22 #define INPRINTF printf 24 #define INPRINTF(x, ...) 27 extern struct st_tcb *run_task;
33 volatile int flg_interrput_proc = 0;
35 void start_vtimer(
void);
36 void stop_vtimer(
void);
38 int is_in_interrupt(
void)
40 return flg_interrput_proc;
49 int block_timer_interrupt(
void)
51 sigset_t mask, old_mask;
55 sigaddset(&mask, SIGNAL_TIMER);
57 res = pthread_sigmask(SIG_BLOCK, &mask, &old_mask);
60 perror(
"trap sigprocmask(SIG_BLOCK)");
63 res = sigismember(&old_mask, SIGNAL_TIMER);
69 printf(
"Mask check error(%d)\n", res);
75 void unblock_timer_interrupt(
void)
81 sigaddset(&mask, SIGNAL_TIMER);
83 res = pthread_sigmask(SIG_UNBLOCK, &mask, NULL);
86 perror(
"trap sigprocmask(SIG_UNBLOCK)");
90 static void trap(
int no)
92 INPRINTF(
"trap %d SIGNAL IN \"%s\"(%d)\r\n", no, run_task->
name);
96 INPRINTF(
"trap SIGNAL syscall OUT \"%s\"\n", run_task->
name);
99 void syscall_trap(
void)
101 block_timer_interrupt();
105 unblock_timer_interrupt();
108 void init_interrupt_vector(
void)
110 INPRINTF(
"%s\n", __FUNCTION__);
113 int register_interrupt(
unsigned short vectnum,
114 void (* func)(
unsigned int intnum,
void *
sp))
119 int unregister_interrupt(
unsigned short vectnum)
char name[TASK_NAME_LEN+1]
タスク名