FPPS4/sys/rtprio.pas

72 lines
1.2 KiB
Plaintext

unit rtprio;
{$mode ObjFPC}{$H+}
{$CALLING SysV_ABI_CDecl}
interface
uses
kern_thr;
const
PRI_ITHD =1; // Interrupt thread.
PRI_REALTIME =2; // Real time process.
PRI_TIMESHARE=3; // Time sharing process.
PRI_IDLE =4; // Idle process.
PRI_FIFO_BIT =8;
PRI_FIFO =10;
PRI_MIN=0;
PRI_MAX=960;
PRI_MIN_TIMESHARE=256;
PRI_MAX_TIMESHARE=767;
PUSER=700;
PRI_MIN_REALTIME=48;
PRI_MAX_REALTIME=767;
PRI_USER =-2; // Change to current user priority.
PRI_UNCHANGED=-1; // Do not change priority.
RTP_PRIO_REALTIME =PRI_REALTIME;
RTP_PRIO_NORMAL =PRI_TIMESHARE;
RTP_PRIO_IDLE =PRI_IDLE;
RTP_PRIO_FIFO =PRI_FIFO;
RTP_PRIO_MIN=PRI_MIN;
RTP_PRIO_MAX=PRI_MAX;
RTP_LOOKUP=0;
RTP_SET =1;
type
p_rtprio=^t_rtprio;
t_rtprio=packed record
_type:Word;
_prio:Word;
end;
{$IF sizeof(t_rtprio)<>4}{$STOP sizeof(t_rtprio)<>4}{$ENDIF}
function PRI_BASE(P:Word):Word;
function RTP_PRIO_BASE(P:Word):Word;
function rtp_to_pri(rtp:p_rtprio;td:p_kthread):Integer; external;
procedure pri_to_rtp(td:p_kthread;rtp:p_rtprio); external;
implementation
function PRI_BASE(P:Word):Word;
begin
Result:=P and (not PRI_FIFO_BIT);
end;
function RTP_PRIO_BASE(P:Word):Word;
begin
Result:=P and (not PRI_FIFO_BIT);
end;
end.