This file is indexed.

/usr/include/xenomai/psos+/psos.h is in libxenomai-dev 2.6.3-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
/*
 * Copyright (C) 2001-2006 Philippe Gerum <rpm@xenomai.org>.
 *
 * Xenomai is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published
 * by the Free Software Foundation; either version 2 of the License,
 * or (at your option) any later version.
 *
 * Xenomai is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Xenomai; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * This file satisfies the references within the emulator code
 * mimicking a pSOS+ like API built upon the Xenomai nucleus.
 *
 * pSOS and pSOS+ are registered trademarks of Wind River Systems, Inc.
 */

#ifndef _PSOS_PSOS_H
#define _PSOS_PSOS_H

#include <nucleus/thread.h>

#define PSOS_SKIN_MAGIC     0x50534F53
#define PSOS_SKIN_VERSION   5

#ifndef SUCCESS
#define SUCCESS 0
#endif

#define T_NOPREEMPT   0x0001
#define T_PREEMPT     0x0000
#define T_TSLICE      0x0002
#define T_NOTSLICE    0x0000
#define T_NOASR       0x0004
#define T_ASR         0x0000
#define T_SUPV        0x2000
#define T_USER        0x0000
#define T_LEVELMASK0  0x0000
#define T_LEVELMASK1  0x0100
#define T_LEVELMASK2  0x0200
#define T_LEVELMASK3  0x0300
#define T_LEVELMASK4  0x0400
#define T_LEVELMASK5  0x0500
#define T_LEVELMASK6  0x0600
#define T_LEVELMASK7  0x0700
#define T_NOISR       0x0700
#define T_ISR         0x0000
#define T_GLOBAL      0x0001
#define T_LOCAL       0x0000
#define T_NOFPU       0x0000
#define T_FPU         0x0002

/* Those bits are Xenomai-specific. */
#define T_SHADOW      XNSHADOW
#define T_TRAPSW      XNTRAPSW
#define T_RPIOFF      XNRPIOFF

#define T_START_MASK  (T_NOPREEMPT|T_TSLICE|T_NOASR|T_SUPV|T_NOISR|T_LEVELMASK7)
#define T_MODE_MASK   (T_NOPREEMPT|T_TSLICE|T_NOASR|T_NOISR| \
			T_LEVELMASK7|T_TRAPSW|T_RPIOFF)

#define RN_PRIOR      0x0002
#define RN_FIFO       0x0000
#define RN_DEL        0x0004
#define RN_NODEL      0x0000
#define RN_NOWAIT     0x0001
#define RN_WAIT       0x0000

#define SM_GLOBAL     0x0001
#define SM_LOCAL      0x0000
#define SM_PRIOR      0x0002
#define SM_FIFO       0x0000
#define SM_NOWAIT     0x0001
#define SM_WAIT       0x0000

#define EV_NOWAIT     0x0001
#define EV_WAIT       0x0000
#define EV_ANY        0x0002
#define EV_ALL        0x0000

#define K_GLOBAL      0x0001
#define K_LOCAL       0x0000

#define PT_GLOBAL     0x0001
#define PT_LOCAL      0x0000
#define PT_DEL        0x0004
#define PT_NODEL      0x0000

#define Q_GLOBAL      0x0001
#define Q_LOCAL       0x0000
#define Q_PRIOR       0x0002
#define Q_FIFO        0x0000
#define Q_LIMIT       0x0004
#define Q_NOLIMIT     0x0000
#define Q_PRIBUF      0x0008
#define Q_SYSBUF      0x0000
#define Q_NOWAIT      0x0001
#define Q_WAIT        0x0000

#define ERR_TIMEOUT  0x01
#define ERR_NODENO   0x04
#define ERR_OBJDEL   0x05
#define ERR_OBJID    0x06
#define ERR_OBJTYPE  0x07
#define ERR_OBJNF    0x09

#define ERR_NOTCB    0x0E
#define ERR_NOSTK    0x0F
#define ERR_TINYSTK  0x10
#define ERR_PRIOR    0x11
#define ERR_ACTIVE   0x12
#define ERR_NACTIVE  0x13
#define ERR_SUSP     0x14
#define ERR_NOTSUSP  0x15
#define ERR_SETPRI   0x16
#define ERR_REGNUM   0x17

#define ERR_RNADDR   0x1B
#define ERR_UNITSIZE 0x1C
#define ERR_TINYUNIT 0x1D
#define ERR_TINYRN   0x1E
#define ERR_SEGINUSE 0x1F
#define ERR_TOOBIG   0x21
#define ERR_NOSEG    0x22
#define ERR_NOTINRN  0x23
#define ERR_SEGADDR  0x24
#define ERR_SEGFREE  0x25
#define ERR_RNKILLD  0x26
#define ERR_TATRNDEL 0x27

#define ERR_PTADDR   0x28
#define ERR_BUFSIZE  0x29
#define ERR_TINYPT   0x2A
#define ERR_BUFINUSE 0x2B
#define ERR_NOBUF    0x2C
#define ERR_BUFADDR  0x2D
#define ERR_BUFFREE  0x2F

#define ERR_MSGSIZ   0x31
#define ERR_BUFSIZ   0x32
#define ERR_NOQCB    0x33
#define ERR_NOMGB    0x34
#define ERR_QFULL    0x35
#define ERR_QKILLD   0x36
#define ERR_NOMSG    0x37
#define ERR_TATQDEL  0x38
#define ERR_MATQDEL  0x39
#define ERR_VARQ     0x3A
#define ERR_NOTVARQ  0x3B

#define ERR_NOEVS    0x3C
#define ERR_NOTINASR 0x3E
#define ERR_NOASR    0x3F

#define ERR_NOSCB    0x41
#define ERR_NOSEM    0x42
#define ERR_SKILLD   0x43
#define ERR_TATSDEL  0x44

#define ERR_NOTIME   0x47
#define ERR_ILLDATE  0x48
#define ERR_ILLTIME  0x49
#define ERR_ILLTICKS 0x4A
#define ERR_BADTMID  0x4C
#define ERR_TMNOTSET 0x4D
#define ERR_TOOLATE  0x4E

#if defined(__KERNEL__) || defined(__XENO_SIM__)

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#define as_return() return
#define i_return()  return

u_long as_catch(void (*routine)(void),
		u_long mode);

u_long tm_tick(void);

u_long t_restart(u_long tid,
		 u_long targs[]);

#ifdef __cplusplus
};
#endif /* __cplusplus */

#else /* !(__KERNEL__ || __XENO_SIM__) */

#include <psos+/syscall.h>

extern unsigned psos_long_names;

#endif /* __KERNEL__ || __XENO_SIM__ */

/*
 * The following macros return normalized or native pSOS priority
 * values. The core scheduler uses an ascending [0-257] priority scale
 * (include/nucleus/sched.h), whilst the pSOS personality exhibits a
 * smaller scale [1-255]. In other words, these macros are nops for
 * pSOS.
 */
#define psos_normalized_prio(prio)	(prio)
#define psos_denormalized_prio(prio)	(prio)

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

void k_fatal(u_long err_code,
	     u_long flags);

u_long as_send(u_long tid,
	       u_long sigs);

u_long ev_receive(u_long events,
		  u_long flags,
		  u_long timeout,
		  u_long *events_r);

u_long ev_send(u_long tid,
	       u_long events);

u_long pt_create(const char *name,
		 void *paddr,
		 void *laddr,
		 u_long psize,
		 u_long bsize,
		 u_long flags,
		 u_long *tid_r,
		 u_long *nbuf_r);

u_long pt_delete(u_long tid);

u_long pt_getbuf(u_long tid,
		 void **bufaddr);

u_long pt_ident(const char *name,
		u_long node,
		u_long *tid_r);

u_long pt_retbuf(u_long tid,
		 void *buf);

u_long q_broadcast(u_long qid,
		   u_long msgbuf[4],
		   u_long *count_r);

u_long q_create(const char *name,
		u_long maxnum,
		u_long flags,
		u_long *qid_r);

u_long q_delete(u_long qid);

u_long q_ident(const char *name,
	       u_long node,
	       u_long *qid_r);

u_long q_receive(u_long qid,
		 u_long flags,
		 u_long timeout,
		 u_long msgbuf[4]);

u_long q_send(u_long qid,
	      u_long msgbuf[4]);

u_long q_urgent(u_long qid,
		u_long msgbuf[4]);

u_long q_vcreate(const char *name,
		 u_long flags,
		 u_long maxnum,
		 u_long maxlen,
		 u_long *qid_r);

u_long q_vdelete(u_long qid);

u_long q_vident(const char *name,
		u_long node,
		u_long *qid_r);

u_long q_vreceive(u_long qid,
		  u_long flags,
		  u_long timeout,
		  void *msgbuf,
		  u_long buflen,
		  u_long *msglen_r);

u_long q_vsend(u_long qid,
	       void *msgbuf,
	       u_long msglen);

u_long q_vurgent(u_long qid,
		 void *msgbuf,
		 u_long msglen);

u_long q_vbroadcast(u_long qid,
		    void *msgbuf,
		    u_long msglen,
		    u_long *count_r);

u_long rn_create(const char *name,
		 void *rnaddr,
		 u_long rnsize,
		 u_long usize,
		 u_long flags,
		 u_long *rnid_r,
		 u_long *allocsize_r);

u_long rn_delete(u_long rnid);

u_long rn_getseg(u_long rnid,
		 u_long size,
		 u_long flags,
		 u_long timeout,
		 void **segaddr);

u_long rn_ident(const char *name,
		u_long *rnid_r);

u_long rn_retseg(u_long rnid,
		 void *segaddr);

u_long sm_create(const char *name,
		 u_long icount,
		 u_long flags,
		 u_long *smid_r);

u_long sm_delete(u_long smid);

u_long sm_ident(const char *name,
		u_long node,
		u_long *smid_r);

u_long sm_p(u_long smid,
	    u_long flags,
	    u_long timeout);

u_long sm_v(u_long smid);

u_long t_create(const char *name,
		u_long prio,
		u_long sstack,
		u_long ustack,
		u_long flags,
		u_long *tid_r) __deprecated_in_kernel__;

u_long t_shadow(const char *name, /* Xenomai extension. */
		u_long prio,
		u_long flags,
		u_long *tid_r);

u_long t_delete(u_long tid);

u_long t_getreg(u_long tid,
		u_long regnum,
		u_long *regvalue_r);

u_long t_ident(const char *name,
	       u_long node,
	       u_long *tid_r);

u_long t_mode(u_long mask,
	      u_long newmask,
	      u_long *oldmode_r);

u_long t_resume(u_long tid);

u_long t_setpri(u_long tid,
		u_long newprio,
		u_long *oldprio_r);

u_long t_setreg(u_long tid,
		u_long regnum,
		u_long regvalue);

u_long t_start(u_long tid,
	       u_long mode,
	       void (*startaddr)(u_long a0,
				 u_long a1,
				 u_long a2,
				 u_long a3),
	       u_long targs[]);

u_long t_suspend(u_long tid);

u_long tm_cancel(u_long tmid);

u_long tm_evafter(u_long ticks,
		  u_long events,
		  u_long *tmid_r);

u_long tm_evevery(u_long ticks,
		  u_long events,
		  u_long *tmid_r);

u_long tm_evwhen(u_long date,
		 u_long time,
		 u_long ticks,
		 u_long events,
		 u_long *tmid_r);

u_long tm_get(u_long *date_r,
	      u_long *time_r,
	      u_long *ticks_r);

u_long tm_set(u_long date,
	      u_long time,
	      u_long ticks);

u_long tm_wkafter(u_long ticks);

u_long tm_wkwhen(u_long date,
		 u_long time,
		 u_long ticks);

u_long tm_getm(unsigned long long *ns_r); /* Xenomai extension. */

u_long tm_signal(u_long value,	/* Xenomai extension. */
		 u_long interval,
		 int signo,
		 u_long *tmid_r);

u_long tm_getc(unsigned long long *ticks_r); /* Xenomai extension. */

#ifdef __cplusplus
};
#endif /* __cplusplus */

#endif /* !_PSOS_PSOS_H */