leon.c
来自「最新版的BCC, bcc-src-1.0.29c.rar,基于sparc平台处理」· C语言 代码 · 共 52 行
C
52 行
#include "internals.h"#include "setjmp.h"#include <fsu_pthread/asm.h>#include <fsu_pthread/debug.h>#include <asm-leon/leon.h>#include <asm-leon/irq.h>#include <asm-leon/time.h>int do_tick(struct pt_regs *regs);struct pendingaction pending_tick = {{0,0},(pendinghandler)do_tick,0};int do_tick(struct pt_regs *regs){ if (!is_in_kernel) { pthread_t p = TAILQ_FIRST(&pthread_timeout_q); SET_KERNEL_FLAG; /* struct timespec tv; */ /* clock_gettime( CLOCK_REALTIME, &tv ); */ /* printf("%d,%d\n",tv.tv_sec,tv.tv_nsec); */ if (p != NO_PTHREAD) { if (!GT_NTIME(p->tp, xtime)) { pthread_cancel_timed_sigwait(p, TRUE, ANY_TIME, p->queue != &ready); } } CLEAR_KERNEL_FLAG; } else { unsigned long old = leonbare_disable_traps(); if (TAILQ_REMOVED(&pending_tick,next)) { add_pending(&pending_tick); } leonbare_enable_traps(old); } return 0;}int do_schedule(struct pt_regs *ptregs) { if (!is_in_kernel) { SET_KERNEL_FLAG; CLEAR_KERNEL_FLAG; }}void pthreadleon_init_ticks(){ int i; amba_apb_device dev[1]; PTRACEIN; leonbare_init_ticks(); schedule_callback = do_schedule; ticker_callback = do_tick;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?