Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  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
440
441
442
443
444
445
446
447
/*
 * sh.decls.h	 External declarations from sh*.c
 */
/*-
 * Copyright (c) 1980, 1991 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */
#ifndef _h_sh_decls
#define _h_sh_decls

/*
 * sh.c
 */
extern	Char	 	 *gethdir	(const Char *);
extern	void		  dosource	(Char **, struct command *);
extern	void		  exitstat	(void);
extern	void		  goodbye	(Char **, struct command *);
extern	void		  importpath	(Char *);
extern	void		  initdesc	(void);
extern	void		  pintr		(void);
extern	void		  pintr1	(int);
extern	void		  phup		(void);
extern	void		  process	(int);
extern	void		  untty		(void);
#ifdef PROF
extern	void		  done		(int) __attribute__((__noreturn__));
#else
extern	void		  xexit		(int) __attribute__((__noreturn__));
#endif
extern	int		  grabpgrp	(int, pid_t);

/*
 * sh.dir.c
 */
extern	void		  dinit		(Char *);
extern	void		  dodirs	(Char **, struct command *);
extern	Char		 *dcanon	(Char *, Char *);
extern	void		  dtildepr	(Char *);
extern	void		  dtilde	(void);
extern	void		  dochngd	(Char **, struct command *);
extern	Char		 *dnormalize	(const Char *, int);
extern	void		  dopushd	(Char **, struct command *);
extern	void		  dopopd	(Char **, struct command *);
extern	void		  dfree		(struct directory *);
extern	void		  dsetstack	(void);
extern	const Char	 *getstakd	(int);
extern	void		  recdirs	(Char *, int);
extern	void		  loaddirs	(Char *);

/*
 * sh.dol.c
 */
extern	void		  Dfix		(struct command *);
extern	Char		 *Dfix1		(Char *);
extern	void		  heredoc	(Char *);
extern  Char		 *randsuf	(void);

/*
 * sh.err.c
 */
extern	void		  reset		(void) __attribute__((__noreturn__));
extern	void		  cleanup_push_internal(void *, void (*fn) (void *)
#ifdef CLEANUP_DEBUG
						, const char *, size_t
#define cleanup_push(v, f) cleanup_push_internal(v, f, __FILE__, __LINE__)
#else
#define cleanup_push(v, f) cleanup_push_internal(v, f)
#endif
);
extern	int		  cleanup_reset(void);
extern	void		  cleanup_ignore(void *);
extern	void		  cleanup_until(void *);
extern	void		  cleanup_until_mark(void);
extern	size_t		  cleanup_push_mark(void);
extern	void		  cleanup_pop_mark(size_t);
extern	void		  open_cleanup(void *);
extern	void		  opendir_cleanup(void *);
extern	void		  sigint_cleanup(void *);
extern	void		  sigprocmask_cleanup(void *);
extern	void		  xfree_indirect(void *);
extern	void		  errinit	(void);
extern	void		  seterror	(unsigned int, ...);
extern	void		  fixerror	(void);
extern	void		  stderror	(unsigned int, ...)
    __attribute__((__noreturn__));

/*
 * sh.exec.c
 */
extern	void		  doexec	(struct command *, int);
extern	void		  dohash	(Char **, struct command *);
extern	void		  dounhash	(Char **, struct command *);
extern	void		  execash	(Char **, struct command *);
extern	void		  hashstat	(Char **, struct command *);
extern	void		  xechoit	(Char **);
extern	int		  executable	(const Char *, const Char *, int);
extern	int		  tellmewhat	(struct wordent *, Char **);
extern	void		  dowhere	(Char **, struct command *);
extern	int		  find_cmd	(Char *, int);

/*
 * sh.exp.c
 */
extern  Char		 *filetest      (Char *, Char ***, int);
extern	tcsh_number_t 	  expr		(Char ***);
extern	tcsh_number_t	  exp0		(Char ***, int);

/*
 * sh.file.c
 */
#if defined(FILEC) && defined(TIOCSTI)
extern	size_t		  tenex		(Char *, size_t);
#endif

/*
 * sh.func.c
 */
extern	void		  tsetenv	(const Char *, const Char *);
extern	void		  Unsetenv	(Char *);
extern	void		  doalias	(Char **, struct command *);
extern	void		  dobreak	(Char **, struct command *);
extern	void		  docontin	(Char **, struct command *);
extern	void		  doecho	(Char **, struct command *);
extern	void		  doelse	(Char **, struct command *);
extern	void		  doend		(Char **, struct command *);
extern	void		  doeval	(Char **, struct command *);
extern	void		  doexit	(Char **, struct command *);
extern	void		  doforeach	(Char **, struct command *);
extern	void		  doglob	(Char **, struct command *);
extern	void		  dogoto	(Char **, struct command *);
extern	void		  doif		(Char **, struct command *);
extern	void		  dolimit	(Char **, struct command *);
extern	void		  dologin	(Char **, struct command *);
extern	void		  dologout	(Char **, struct command *);
#ifdef NEWGRP
extern	void		  donewgrp	(Char **, struct command *);
#endif
extern	void		  donohup	(Char **, struct command *);
extern	void		  dohup		(Char **, struct command *);
extern	void		  doonintr	(Char **, struct command *);
extern	void		  doprintenv	(Char **, struct command *);
extern	void		  dorepeat	(Char **, struct command *);
extern	void		  dofiletest	(Char **, struct command *);
extern	void		  dosetenv	(Char **, struct command *);
extern	void		  dosuspend	(Char **, struct command *);
extern	void		  doswbrk	(Char **, struct command *);
extern	void		  doswitch	(Char **, struct command *);
extern	void		  doumask	(Char **, struct command *);
extern	void		  dounlimit	(Char **, struct command *);
extern	void		  dounsetenv	(Char **, struct command *);
extern	void		  dowhile	(Char **, struct command *);
extern	void		  dozip		(Char **, struct command *);
extern	void		  func		(struct command *,
					 const struct biltins *);
extern	void		  gotolab	(Char *);
extern const struct biltins *isbfunc	(struct command *);
extern	void		  prvars	(void);
extern	int		  srchx		(Char *);
extern	void		  unalias	(Char **, struct command *);
extern	void		  wfree		(void);
extern	void		  dobuiltins	(Char **, struct command *);
extern	void		  reexecute	(struct command *);
extern  int		  getYN		(const char *);

/*
 * sh.glob.c
 */
extern	Char	 	 *globequal	(Char *);
extern	Char		**dobackp	(Char *, int);
extern	Char		 *globone	(Char *, int);
extern	int		  Gmatch	(const Char *, const Char *);
extern	int		  Gnmatch	(const Char *, const Char *,
					 const Char **);
extern	Char		**globall	(Char **, int);
extern	Char		**glob_all_or_error(Char **);
extern	void		  rscan		(Char **, void (*)(Char));
extern	int		  tglob		(Char **);
extern	void		  trim		(Char **);

#if !defined(WINNT_NATIVE) && defined(NLS_CATALOGS)
extern	char		 *xcatgets	(nl_catd, int, int, const char *);
#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
extern	char		 *iconv_catgets	(nl_catd, int, int, const char *);
#endif
#endif
extern	void		  nlsinit	(void);
extern	void	          nlsclose	(void);
extern  int	  	  t_pmatch	(const Char *, const Char *,
					 const Char **, int);

/*
 * sh.hist.c
 */
extern	void	 	  dohist	(Char **, struct command *);
extern  struct Hist 	 *enthist	(int, struct wordent *, int, int, int);
extern	void	 	  savehist	(struct wordent *, int);
extern	char		 *fmthist	(int, ptr_t);
extern	void		  rechist	(Char *, int);
extern	void		  loadhist	(Char *, int);
extern	void		  displayHistStats(const char *);
extern	void		  sethistory	(int);

/*
 * sh.init.c
 */
extern	void		  mesginit	(void);

/*
 * sh.lex.c
 */
extern	void		  addla		(Char *);
extern	void		  bseek		(struct Ain *);
extern	void		  btell		(struct Ain *);
extern	void		  btoeof	(void);
extern	void		  copylex	(struct wordent *, struct wordent *);
extern	Char		 *domod		(Char *, Char);
extern	void		  initlex	(struct wordent *);
extern	void		  freelex	(struct wordent *);
extern	int		  lex		(struct wordent *);
extern	void		  lex_cleanup	(void *);
extern	void		  prlex		(struct wordent *);
extern	eChar		  readc		(int);
extern	void		  settell	(void);
extern	void		  unreadc	(Char);
extern	ssize_t		  wide_read	(int, Char *, size_t, int);


/*
 * sh.misc.c
 */
extern	int		  any		(const char *, Char);
extern	Char		**blkcpy	(Char **, Char **);
extern	void		  blkfree	(Char **);
extern	void		  blk_cleanup	(void *);
extern	void		  blk_indirect_cleanup(void *);
extern	int		  blklen	(Char **);
extern	void		  blkpr		(Char *const *);
extern	Char		 *blkexpand	(Char *const *);
extern	Char		**blkspl	(Char **, Char **);
extern	void		  closem	(void);
#ifndef CLOSE_ON_EXEC
extern  void 		  closech	(void);
#endif /* !CLOSE_ON_EXEC */
extern	Char		**copyblk	(Char **);
extern	int		  dcopy		(int, int);
extern	int		  dmove		(int, int);
extern	void		  donefds	(void);
extern	Char		  lastchr	(Char *);
extern	void		  lshift	(Char **, int);
extern	int		  number	(Char *);
extern	int		  prefix	(const Char *, const Char *);
extern	Char		**saveblk	(Char **);
extern	void		  setzero	(void *, size_t);
extern	Char		 *strip		(Char *);
extern	Char		 *quote		(Char *);
extern	const Char	 *quote_meta	(struct Strbuf *, const Char *);
#ifndef SHORT_STRINGS
extern	char		 *strnsave	(const char *, size_t);
#endif
extern	char		 *strsave	(const char *);
extern	void		  udvar		(Char *) __attribute__((__noreturn__));
#ifndef POSIX
extern  char   	  	 *strstr	(const char *, const char *);
#endif /* !POSIX */
extern	char		 *strspl	(const char *, const char *);
extern	char		 *strend	(const char *);
extern	char		 *areadlink	(const char *);
extern	void		  xclose	(int);
extern	void		  xclosedir	(DIR *);
extern	int		  xcreat	(const char *, mode_t);
extern	struct group	 *xgetgrgid	(gid_t);
extern	struct passwd	 *xgetpwnam	(const char *);
extern	struct passwd	 *xgetpwuid	(uid_t);
extern	int		  xopen		(const char *, int, ...);
extern	ssize_t		  xread		(int, void *, size_t);
extern	int		  xtcsetattr	(int, int, const struct termios *);
extern	ssize_t		  xwrite	(int, const void *, size_t);

/*
 * sh.parse.c
 */
extern	void		  alias		(struct wordent *);
extern	void		  freesyn	(struct command *);
extern struct command 	 *syntax	(const struct wordent *,
					 const struct wordent *, int);
extern	void		  syntax_cleanup(void *);

/*
 * sh.print.c
 */
extern	void		  drainoline	(void);
extern	void		  flush		(void);
#ifdef BSDTIMES
extern	void		  pcsecs	(unsigned long);
#else /* !BSDTIMES */
# ifdef POSIX
extern	void		  pcsecs	(clock_t);
# else /* !POSIX */
extern	void		  pcsecs	(time_t);
# endif /* !POSIX */
#endif /* BSDTIMES */
#ifdef BSDLIMIT
extern	void		  psecs		(unsigned long);
#endif /* BSDLIMIT */
extern	int		  putpure	(int);
extern	int		  putraw	(int);
extern	void		  xputchar	(int);
#ifdef WIDE_STRINGS
extern	void		  putwraw	(Char);
extern	void		  xputwchar	(Char);
#else
# define putwraw(C) putraw(C)
# define xputwchar(C) xputchar(C)
#endif
extern	void		  output_raw_restore(void *);


/*
 * sh.proc.c
 */
extern	void		  dobg		(Char **, struct command *);
extern	void		  dobg1		(Char **, struct command *);
extern	void		  dofg		(Char **, struct command *);
extern	void		  dofg1		(Char **, struct command *);
extern	void		  dojobs	(Char **, struct command *);
extern	void		  dokill	(Char **, struct command *);
extern	void		  donotify	(Char **, struct command *);
extern	void		  dostop	(Char **, struct command *);
extern	void		  dowait	(Char **, struct command *);
extern	void		  palloc	(pid_t, struct command *);
extern	void		  panystop	(int);
extern	void		  pchild	(void);
extern	void		  pendjob	(void);
extern	pid_t		  pfork		(struct command *, int);
extern	void		  pgetty	(int, pid_t);
extern	void		  pjwait	(struct process *);
extern	void		  pnote		(void);
extern	void		  psavejob	(void);
extern	void		  psavejob_cleanup(void *);
extern	int		  pstart	(struct process *, int);
extern	void		  pwait		(void);
extern  struct process   *pfind		(Char *);

/*
 * sh.sem.c
 */
extern	void		  execute	(struct command *, volatile int, int *,
					 int *, int);
extern	void		  mypipe	(int *);

/*
 * sh.set.c
 */
extern	struct varent 	 *adrof1	(const Char *, struct varent *);
extern	void		  doset		(Char **, struct command *);
extern	void		  dolet		(Char **, struct command *);
extern	Char		 *putn		(tcsh_number_t);
extern	tcsh_number_t	  getn		(const Char *);
extern	Char		 *value1	(Char *, struct varent *);
extern	void		  setcopy	(const Char *, const Char *, int);
extern	void		  setv		(const Char *, Char *, int);
extern	void		  set1		(const Char *, Char **,
					 struct varent *, int);
extern	void		  setq		(const Char *, Char **,
					 struct varent *, int);
extern	void		  unset		(Char **, struct command *);
extern	void		  unset1	(Char *[], struct varent *);
extern	void		  unsetv	(Char *);
extern	void		  setNS		(const Char *);
extern	void		  shift		(Char **, struct command *);
extern	void		  plist		(struct varent *, int);
extern	Char		 *unparse	(struct command *);
#if defined(DSPMBYTE)
extern	void 		  update_dspmbyte_vars	(void);
extern	void		  autoset_dspmbyte	(const Char *);
#endif
#if defined(AUTOSET_KANJI)
extern	void		  autoset_kanji	(void);
#endif
extern	void		  update_wordchars	(void);

/*
 * sh.time.c
 */
extern	void		  donice	(Char **, struct command *);
extern	void		  dotime	(Char **, struct command *);
#ifdef BSDTIMES
extern	void		  prusage	(struct sysrusage *,
					 struct sysrusage *, 
					 timeval_t *, timeval_t *);
extern	void		  ruadd		(struct sysrusage *,
					 struct sysrusage *);
#else /* BSDTIMES */
# ifdef _SEQUENT_
extern	void		  prusage	(struct process_stats *,
					 struct process_stats *, 
					 timeval_t *, timeval_t *);
extern	void		  ruadd		(struct process_stats *,
					 struct process_stats *);
# else /* !_SEQUENT_ */
#  ifdef POSIX
extern	void		  prusage	(struct tms *, struct tms *, 
					 clock_t, clock_t);
#  else	/* !POSIX */
extern	void		  prusage	(struct tms *, struct tms *, 
					 time_t, time_t);
#  endif /* !POSIX */
# endif	/* !_SEQUENT_ */
#endif /* BSDTIMES */
extern	void		  settimes	(void);
#if defined(BSDTIMES) || defined(_SEQUENT_)
extern	void		  tvsub		(struct timeval *, 
					 struct timeval *, 
					 struct timeval *);
#endif /* BSDTIMES || _SEQUENT_ */

/*
 * tw.parse.c
 */
extern	 void		  copyn			(Char *, const Char *, size_t);
extern	 void		  catn			(Char *, const Char *, int);

#endif /* _h_sh_decls */