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 6 RTP 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 ** Long_Long_Integer'Size; 43 44 type t_id is new Long_Integer; 45 subtype int is Interfaces.C.int; 46 subtype unsigned is Interfaces.C.unsigned; 47 48 type Interrupt_Handler is access procedure (parameter : System.Address); 49 pragma Convention (C, Interrupt_Handler); 50 51 type Interrupt_Vector is new System.Address; 52 53 function Int_Lock return int; 54 pragma Inline (Int_Lock); 55 56 function Int_Unlock (Old : int) return int; 57 pragma Inline (Int_Unlock); 58 59 function Interrupt_Connect 60 (Vector : Interrupt_Vector; 61 Handler : Interrupt_Handler; 62 Parameter : System.Address := System.Null_Address) return int; 63 pragma Convention (C, Interrupt_Connect); 64 65 function Interrupt_Context return int; 66 pragma Convention (C, Interrupt_Context); 67 68 function Interrupt_Number_To_Vector 69 (intNum : int) return Interrupt_Vector; 70 pragma Convention (C, Interrupt_Number_To_Vector); 71 72 function semDelete (Sem : SEM_ID) return int; 73 pragma Convention (C, semDelete); 74 75 function Task_Cont (tid : t_id) return int; 76 pragma Import (C, Task_Cont, "taskResume"); 77 78 function Task_Stop (tid : t_id) return int; 79 pragma Import (C, Task_Stop, "taskSuspend"); 80 81 function kill (pid : t_id; sig : int) return int; 82 pragma Import (C, kill, "taskKill"); 83 84 function getpid return t_id; 85 pragma Import (C, getpid, "getpid"); 86 87 function Set_Time_Slice (ticks : int) return int; 88 pragma Inline (Set_Time_Slice); 89 90 -------------------------------- 91 -- Processor Affinity for SMP -- 92 -------------------------------- 93 94 function taskCpuAffinitySet (tid : t_id; CPU : int) return int; 95 pragma Convention (C, taskCpuAffinitySet); 96 -- For SMP run-times set the CPU affinity. 97 -- For uniprocessor systems return ERROR status. 98 99 function taskMaskAffinitySet (tid : t_id; CPU_Set : unsigned) return int; 100 pragma Convention (C, taskMaskAffinitySet); 101 -- For SMP run-times set the CPU mask affinity. 102 -- For uniprocessor systems return ERROR status. 103 104end System.VxWorks.Ext; 105