ack/lang/cem/libcc.ansi/core
2018-06-22 22:20:02 +02:00
..
ctype Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
locale Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
math Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
misc Move some more libc functions into core. 2018-06-22 22:20:02 +02:00
setjmp Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
stdio Move some more libc functions into core. 2018-06-22 22:20:02 +02:00
stdlib Move some more libc functions into core. 2018-06-22 22:20:02 +02:00
string Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
README.md Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00

This directory contains the libc core: functions here may depend on other libc functions only (so, no unistd.h stuff). Plats don't get to configure this, so nothing here should add any overhead if the function isn't linked.

Examples of what goes here:

  • strcmp() --- because it's pure code.
  • setjmp() --- in EM, it's portable.
  • assert() --- because it only calls other core functions (fputs() and abort()).

Examples of what doesn't go here:

  • malloc() --- because it calls the unistd.h function sbrk() (and so a plat might want to swap it out).
  • stdio --- because it calls the unistd.h functions read(), write() etc.
  • signal() --- because it can't be implemented portably and needs to go in the plat.