📄 psos.h
字号:
/***********************************************************************//* *//* MODULE: include/psos.h *//* DATE: 99/04/16 *//* PURPOSE: Structure typedefs, function prototypes, macros, and *//* symbol definitions for pSOS+ kernel *//* *//*---------------------------------------------------------------------*//* *//* Copyright 1988 - 1999, Integrated Systems, Inc. *//* ALL RIGHTS RESERVED *//* *//* Permission is hereby granted to licensees of Integrated Systems, *//* Inc. products to use or abstract this computer program for the *//* sole purpose of implementing a product based on Integrated *//* Systems, Inc. products. No other rights to reproduce, use, *//* or disseminate this program, whether in part or in whole, are *//* granted. *//* *//* Integrated Systems, Inc. makes no representation or warranties *//* with respect to the performance of this computer program, and *//* specifically disclaims any responsibility for any damages, *//* special or consequential, connected with its use. *//* *//***********************************************************************/#ifndef _PSOS_H#define _PSOS_H#ifdef __cplusplusextern "C" {#endif#include "types.h"#include "errors.h"/* TriMedia specific version number */#define TM_PSOS_VERSION 252/***********************************************************************//* pSOS+ Structure Definitions *//***********************************************************************//*---------------------------------------------------------------------*//* I/O Driver Parameter Structure *//*---------------------------------------------------------------------*/typedef struct ioparms { ULONG used; /* Set by driver if this interface used */ ULONG tid; /* task ID of calling task */ ULONG in_dev; /* Input device number */ ULONG status; /* Processor status of caller */ void *in_iopb; /* Input pointer to IO parameter block */ void *io_data_area; /* no longer used */ ULONG err; /* For error return */ ULONG out_retval; /* For return value */ } IOPARMS;/*---------------------------------------------------------------------*//* pSOS+ I/O switch table entry - the table is an array of these *//* structures *//*---------------------------------------------------------------------*/typedef struct iojent { void (*dev_init) (IOPARMS *); /* device init procedure */ void (*dev_open) (IOPARMS *); /* device open procedure */ void (*dev_close) (IOPARMS *); /* device close procedure */ void (*dev_read) (IOPARMS *); /* device read procedure */ void (*dev_write) (IOPARMS *); /* device write procedure */ void (*dev_ioctl) (IOPARMS *); /* device control procedure */ ULONG dev_param; /* Used by STREAMS Modules */ USHORT rsvd2; /* reserved, set to 0 */ USHORT flags; /* If set to IO_AUTOINIT pSOS */ /* will automatically call the */ /* devices initialization */ /* function */ } IOJENT;#define pSOS_IO_Jump_Table iojent /* For backward compatibility */ struct co_info { ULONG tid; /* ID of task in whose context callout is executing */ ULONG ptid; /* ID of task who performed start/restart/delete */ }; typedef struct co_info CO_INFO;/***********************************************************************//* pSOS+ System Calls (defined in psos.s) *//***********************************************************************/ULONG as_catch(void (*start_addr)(), ULONG mode);ULONG as_notify(ULONG events);ULONG as_send(ULONG tid, ULONG signals);ULONG as_return(void);ULONG co_register(ULONG type, void (*func)(void *, CO_INFO *), void *arg, ULONG *coid);ULONG co_unregister(ULONG coid, ULONG flags, ULONG timeout);ULONG ev_receive(ULONG events, ULONG flags, ULONG timeout, ULONG *events_r);ULONG ev_send(ULONG tid, ULONG events);void k_fatal(ULONG err_code, ULONG flags);ULONG k_terminate(ULONG node, ULONG fcode, ULONG flags);ULONG m_ext2int(void *ext_addr, void **int_addr);ULONG m_int2ext(void *int_addr, void **ext_addr);ULONG pt_create(char name[4], void *paddr, void *laddr, ULONG length, ULONG bsize, ULONG flags, ULONG *ptid, ULONG *nbuf);ULONG pt_delete(ULONG ptid);ULONG pt_getbuf(ULONG ptid, void **bufaddr);ULONG pt_ident(char name[4], ULONG node, ULONG *ptid);ULONG pt_retbuf(ULONG ptid, void *buf_addr);ULONG pt_sgetbuf(ULONG ptid, void **paddr, void **laddr);ULONG q_broadcast(ULONG qid, ULONG msg_buf[4], ULONG *count);ULONG q_create(char name[4], ULONG count, ULONG flags, ULONG *qid);ULONG q_delete(ULONG qid);ULONG q_ident(char name[4], ULONG node, ULONG *qid);ULONG q_notify(ULONG qid, ULONG tid, ULONG events);ULONG q_receive(ULONG qid, ULONG flags, ULONG timeout, ULONG msg_buf[4]);ULONG q_send(ULONG qid, ULONG msg_buf[4]);ULONG q_urgent(ULONG qid, ULONG msg_buf[4]);ULONG q_vcreate(char name[4], ULONG flags, ULONG maxnum, ULONG maxlen, ULONG *qid);ULONG q_vdelete(ULONG qid);ULONG q_vident(char name[4], ULONG node, ULONG *qid);ULONG q_vnotify(ULONG qid, ULONG tid, ULONG events);ULONG q_vreceive(ULONG qid, ULONG flags, ULONG timeout, void *msgbuf, ULONG buf_len, ULONG *msg_len);ULONG q_vsend(ULONG qid, void *msgbuf, ULONG msg_len);ULONG q_vurgent(ULONG qid, void *msgbuf, ULONG msg_len);ULONG q_vbroadcast(ULONG qid, void *msgbuf, ULONG msg_len, ULONG *count);ULONG rn_create(char name[4], void *saddr, ULONG length, ULONG unit_size, ULONG flags, ULONG *rnid, ULONG *asiz);ULONG rn_delete(ULONG rnid);ULONG rn_getseg(ULONG rnid, ULONG size, ULONG flags, ULONG timeout, void **seg_addr);ULONG rn_ident(char name[4], ULONG *rnid);ULONG rn_retseg(ULONG rnid, void *seg_addr);ULONG sm_create(char name[4], ULONG count, ULONG flags,ULONG *smid);ULONG sm_delete(ULONG smid);ULONG sm_ident(char name[4], ULONG node, ULONG *smid);ULONG sm_p(ULONG smid, ULONG flags, ULONG timeout);ULONG sm_v(ULONG smid);ULONG sm_notify(ULONG smid, ULONG tid, ULONG events);ULONG t_create(char name[4], ULONG prio, ULONG sstack, ULONG ustack, ULONG flags, ULONG *tid);ULONG t_delete(ULONG tid);ULONG t_getreg(ULONG tid, ULONG regnum, ULONG *reg_value);ULONG t_ident(char name[4], ULONG node, ULONG *tid);ULONG t_mode(ULONG mask, ULONG new_mode, ULONG *old_mode);ULONG t_restart(ULONG tid, ULONG targs[]);ULONG t_resume(ULONG tid);ULONG t_setpri(ULONG tid, ULONG newprio, ULONG *oldprio);ULONG t_setreg(ULONG tid, ULONG regnum, ULONG reg_value);ULONG t_start(ULONG tid, ULONG mode, void (*start_addr)(), ULONG targs[]);ULONG t_tslice(ULONG tid, ULONG new_tslice, ULONG *old_tslice);ULONG t_suspend(ULONG tid);ULONG t_addvar(ULONG tid, void **tv_addr, void *tv_value);ULONG t_delvar(ULONG tid, void **tv_addr);ULONG tm_cancel(ULONG tmid);ULONG tm_evafter(ULONG ticks, ULONG events, ULONG *tmid);ULONG tm_evevery(ULONG ticks, ULONG events, ULONG *tmid);ULONG tm_evwhen(ULONG date, ULONG time, ULONG ticks, ULONG events, ULONG *tmid);ULONG tm_get(ULONG *date, ULONG *time, ULONG *ticks);ULONG tm_set(ULONG date, ULONG time, ULONG ticks);ULONG tm_tick(void);ULONG tm_wkafter(ULONG ticks);ULONG tm_wkwhen(ULONG date, ULONG time, ULONG ticks);ULONG tm_getticks(ULONG *tickshi, ULONG *tickslo);/*---------------------------------------------------------------------*//* Asynchronous Service Call Definitions *//*---------------------------------------------------------------------*/ULONG ev_asend(ULONG tid, ULONG events);ULONG sm_av(ULONG smid);ULONG q_asend(ULONG qid, ULONG msg_buf[4]);ULONG q_avsend(ULONG qid, void *msgbuf, ULONG msg_len);ULONG q_aurgent(ULONG qid, ULONG msg_buf[4]);ULONG q_avurgent(ULONG qid, void *msgbuf, ULONG msg_len);/*---------------------------------------------------------------------*//* Mutex Service Call definitions *//*---------------------------------------------------------------------*/ULONG mu_create(char name[4], ULONG flags, ULONG ceiling, ULONG *muid);ULONG mu_delete(ULONG muid);ULONG mu_ident(char name[4], ULONG node, ULONG *muid);ULONG mu_lock(ULONG muid, ULONG flags, ULONG timeout);ULONG mu_unlock(ULONG muid);ULONG mu_setceil(ULONG muid, ULONG newceil, ULONG *oldceil); /*---------------------------------------------------------------------*//* Condition Variables Service Call Definitions *//*---------------------------------------------------------------------*/ULONG cv_create(char name[4], ULONG flags, ULONG *cvid);ULONG cv_delete(ULONG cvid);ULONG cv_ident(char name[4], ULONG node, ULONG *cvid);ULONG cv_wait(ULONG cvid, ULONG muid, ULONG timeout);ULONG cv_signal(ULONG cvid);ULONG cv_broadcast(ULONG cvid);ULONG cv_asignal(ULONG cvid);ULONG cv_abroadcast(ULONG cvid);/*---------------------------------------------------------------------*//* TSD Service Call Definitions *//*---------------------------------------------------------------------*/ULONG tsd_create(char name[4], ULONG size, ULONG flags, void ****tsdanchor, ULONG *tsdix);ULONG tsd_delete(ULONG tsdix);ULONG tsd_ident(char name[4], ULONG *tsdix);ULONG tsd_getval(ULONG tsdix, ULONG tid, void **valp);ULONG tsd_setval(ULONG tsdix, ULONG tid, void *newval);/*---------------------------------------------------------------------*//* Service Call Extension Service Call Definitions *//* NOTE: The interface may change in future versions. *//*---------------------------------------------------------------------*/ULONG sc_register(ULONG major, ULONG minor, ULONG flags, ULONG ncalls, void *svcjtab, void (*initfn)(void *, void *), void *arg);ULONG sc_unregister(ULONG major, ULONG minor, ULONG flags);/*---------------------------------------------------------------------*//* I/O Service Call Definitions *//*---------------------------------------------------------------------*/ULONG de_close(ULONG dev, void *iopb, void *retval);ULONG de_cntrl(ULONG dev, void *iopb, void *retval);ULONG de_init(ULONG dev, void *iopb, void *retval, void **data_area);ULONG de_open(ULONG dev, void *iopb, void *retval);ULONG de_read(ULONG dev, void *iopb, void *retval);ULONG de_write(ULONG dev, void *iopb, void *retval);ULONG ioj_bind(ULONG major, struct iojent *iojent);ULONG ioj_bindany(struct iojent *iojent, ULONG *major);ULONG ioj_unbind(ULONG major);ULONG ioj_lock(ULONG major);ULONG ioj_unlock(ULONG major);ULONG ioj_getent(ULONG major, struct iojent *iojent); ULONG dnt_add(char *name, ULONG dev);ULONG dnt_remove(char *name);ULONG dnt_find(char *name, ULONG *dev);#ifdef __TCS__/* The following function is a TriMedia extension: */typedef struct { ULONG *stk_low; /* lowest address of task's stack */ ULONG *stk_sp; /* current stack pointer */ ULONG *stk_high; /* highest address of task's stack */ ULONG load; /* high water mark; maximum amount of */ /* bytes used on stack Up to the */ /* moment of the call to t_taskinfo */ char name[4]; /* task's name */ ULONG appid; /* TCS's application id */} PSOS_Task_Info;ULONG t_taskinfo( ULONG task, PSOS_Task_Info *info );#endif/***********************************************************************//* pSOS+ Symbol Definitions *//***********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -