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 + -
显示快捷键?