📄 tsk.h
字号:
/*
* Copyright 2003 by Texas Instruments Incorporated.
* All rights reserved. Property of Texas Instruments Incorporated.
* Restricted rights to use, duplicate or disclose this code are
* granted through contract.
*
*/
/* "@(#) DSP/BIOS 4.90.270 12-18-03 (barracuda-o04)" */
/*
* ======== tsk.h ========
*
*/
#ifndef TSK_
#define TSK_
#include <stdarg.h>
#include <knl.h>
#include <prd.h>
#include <sem.h>
#include <sts.h>
#include <sys.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TSK_IDLEPRI KNL_IDLEPRI
#define TSK_MINPRI KNL_MINPRI
#define TSK_MAXPRI KNL_MAXPRI
#define TSK_MAXARGS KNL_MAXARGS
#define TSK_RUNNING KNL_RUNNING
#define TSK_READY KNL_READY
#define TSK_BLOCKED KNL_BLOCKED
#define TSK_TERMINATED KNL_TERMINATED
typedef struct TSK_Config {
Int STACKSEG;
Int PRIORITY;
Uns STACKSIZE;
#ifdef _55_
Uns SYSSTACKSIZE;
#endif
Fxn CREATEFXN;
Fxn DELETEFXN;
Fxn EXITFXN;
Fxn SWITCHFXN;
Fxn READYFXN;
} TSK_Config;
extern TSK_Config *TSK;
/* For C55x, TSK is defined in tsk.c as TSK_Config *TSK */
/* For C54x, TSK is defined in TSK_end as
.bss _TSK, 1 * STD_TARGWORDMAUS, 0, STD_TARGWORDMAUS */
/* For C6x, TSK is defined in TSK_end as
.bss _TSK, 1 * STD_TARGWORDMAUS, STD_TARGWORDMAUS */
typedef Int TSK_Mode;
typedef struct TSK_Attrs {
Int priority; /* task priority */
Ptr stack; /* stack supplied */
Uns stacksize; /* size of stack */
#ifdef _55_
Uns sysstacksize; /* size of system stack */
#endif
Int stackseg; /* segment to allocate stack from */
Ptr environ; /* environment pointer */
String name; /* printable name */
Bool exitflag; /* FALSE for server tasks */
} TSK_Attrs;
typedef struct TSK_Obj {
KNL_Obj kobj; /* kernel object */
Ptr stack; /* used in TSK_delete() */
#ifdef _55_
Ptr sysstack; /* system stack for 55x */
#endif
Uns stacksize; /* ditto */
#ifdef _55_
Uns sysstacksize; /* system stackszie for 55x */
#endif
Int stackseg; /* segment to allocate stack from */
String name; /* printable name */
Ptr environ; /* environment pointer */
Int errno; /* TSK_seterr()/TSK_geterr() */
Bool exitflag; /* FALSE for server tasks */
} TSK_Obj, *TSK_Handle;
typedef struct TSK_Stat {
TSK_Attrs attrs; /* task attributes */
TSK_Mode mode; /* TSK_RUNNING, TSK_READY, ... */
Ptr sp; /*stack pointer(not valid when TSK_RUNNING!)*/
#ifdef _55_
Ptr ssp; /* System stack pointer only forr 55x*/
#endif
Uns used; /* stack used */
#ifdef _55_
Uns sysUsed; /* System stack used */
#endif
} TSK_Stat;
extern TSK_Attrs TSK_ATTRS; /* default attributes */
/* defined in tsk.c */
extern Int TSK_nTasks; /* only modified while inside kernel */
extern Int TSK_pid; /* MP processor id */
extern Int TSK_initPid; /* TSK_pid initialization record */
extern Int TSK_NUMPIDS; /* number of processors in MP system */
extern SEM_Obj TSK_timerSem;
#define TSK_geterr(task) ((task)->errno)
#define TSK_getpri(task) (((KNL_Handle)(task))->priority)
#define TSK_getname(task) ((task)->name)
#define TSK_self() ((TSK_Handle)KNL_curtask)
#define TSK_seterr(task, e) ((task)->errno = (e))
#define TSK_sleep(nticks) (SEM_pend(&TSK_timerSem, nticks))
#define TSK_time() KNL_curtime
#define TSK_tick() KNL_tick()
#define TSK_itick() KNL_tick()
extern Void TSK_checkstacks(TSK_Handle oldtask, TSK_Handle newtask);
extern TSK_Handle TSK_create(Fxn fxn, TSK_Attrs *attrs, ...);
extern Void TSK_delete(TSK_Handle task);
extern Void TSK_disable(void);
extern Void TSK_enable(void);
extern Void TSK_exit(void);
extern Ptr TSK_getenv(TSK_Handle task);
extern Void TSK_init(void);
extern Void TSK_print(TSK_Handle task);
extern Void TSK_setenv(TSK_Handle task, Ptr env);
extern Int TSK_setpri(TSK_Handle task, Int newpri);
extern Void TSK_stat(TSK_Handle task, TSK_Stat *statbuf);
extern Void TSK_start(TSK_Handle task, Fxn fxn, va_list argv);
extern Void TSK_switchFxn(KNL_Handle oldtask, KNL_Handle newtask);
extern Void TSK_yield(void);
/*
* Task hooks for instrumented kernel.
*/
extern Void TSK_createFxn(TSK_Handle task);
extern Void TSK_deleteFxn(TSK_Handle task);
extern Void TSK_exitFxn(Void);
extern Void TSK_readyFxn(TSK_Handle task);
extern Void TSK_settime(TSK_Handle task);
extern Void TSK_deltatime(TSK_Handle task);
extern STS_Handle TSK_getsts(TSK_Handle task);
extern Void TSK_resettime(TSK_Handle task);
extern Void TSK_switchFxn(KNL_Handle oldtask, KNL_Handle newtask);
#ifdef __cplusplus
}
#endif /* extern "C" */
#endif /* TSK_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -