1------------------------------------------------------------------------------ 2-- -- 3-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- 4-- -- 5-- S Y S T E M . V X W O R K S . E X T -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 2008-2019, Free Software Foundation, Inc. -- 10-- -- 11-- GNARL is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. -- 17-- -- 18-- As a special exception under Section 7 of GPL version 3, you are granted -- 19-- additional permissions described in the GCC Runtime Library Exception, -- 20-- version 3.1, as published by the Free Software Foundation. -- 21-- -- 22-- You should have received a copy of the GNU General Public License and -- 23-- a copy of the GCC Runtime Library Exception along with this program; -- 24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 25-- <http://www.gnu.org/licenses/>. -- 26-- -- 27------------------------------------------------------------------------------ 28 29-- This package provides vxworks specific support functions needed 30-- by System.OS_Interface. 31 32-- This is the VxWorks 5 and VxWorks MILS version of this package 33 34with Interfaces.C; 35 36package System.VxWorks.Ext is 37 pragma Preelaborate; 38 39 subtype SEM_ID is Long_Integer; 40 -- typedef struct semaphore *SEM_ID; 41 42 type sigset_t is mod 2 ** Interfaces.C.long'Size; 43 44 type t_id is new Long_Integer; 45 46 subtype int is Interfaces.C.int; 47 subtype unsigned is Interfaces.C.unsigned; 48 49 type Interrupt_Handler is access procedure (parameter : System.Address); 50 pragma Convention (C, Interrupt_Handler); 51 52 type Interrupt_Vector is new System.Address; 53 54 function Int_Lock return int; 55 pragma Import (C, Int_Lock, "intLock"); 56 57 function Int_Unlock (Old : int) return int; 58 pragma Import (C, Int_Unlock, "intUnlock"); 59 60 function Interrupt_Connect 61 (Vector : Interrupt_Vector; 62 Handler : Interrupt_Handler; 63 Parameter : System.Address := System.Null_Address) return int; 64 pragma Import (C, Interrupt_Connect, "intConnect"); 65 66 function Interrupt_Context return int; 67 pragma Import (C, Interrupt_Context, "intContext"); 68 69 function Interrupt_Number_To_Vector 70 (intNum : int) return Interrupt_Vector; 71 pragma Import (C, Interrupt_Number_To_Vector, "__gnat_inum_to_ivec"); 72 73 function semDelete (Sem : SEM_ID) return int; 74 pragma Import (C, semDelete, "semDelete"); 75 76 function Task_Cont (tid : t_id) return int; 77 pragma Import (C, Task_Cont, "taskResume"); 78 79 function Task_Stop (tid : t_id) return int; 80 pragma Import (C, Task_Stop, "taskSuspend"); 81 82 function kill (pid : t_id; sig : int) return int; 83 pragma Import (C, kill, "kill"); 84 85 function getpid return t_id; 86 pragma Import (C, getpid, "taskIdSelf"); 87 88 function Set_Time_Slice (ticks : int) return int; 89 pragma Import (C, Set_Time_Slice, "kernelTimeSlice"); 90 91 -------------------------------- 92 -- Processor Affinity for SMP -- 93 -------------------------------- 94 95 function taskCpuAffinitySet (tid : t_id; CPU : int) return int; 96 pragma Convention (C, taskCpuAffinitySet); 97 -- For SMP run-times set the CPU affinity. 98 -- For uniprocessor systems return ERROR status. 99 100 function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int; 101 pragma Convention (C, taskMaskAffinitySet); 102 -- For SMP run-times set the CPU mask affinity. 103 -- For uniprocessor systems return ERROR status. 104 105end System.VxWorks.Ext; 106