wiki:kernel_tty0

Version 2 (modified by alain, 10 years ago) (diff)

--

GIET-VM / TTY0 access functions

The utils.c and util.h files define the functions used to access the kernel terminal TTY[0]. The _put* functions do not take the lock protecting exclusive access. The _printf function takes the lock protecting exclusive access.

They are prefixed by "_" to remind that they can only be executed by a processor in kernel mode.

void _puts( char* string )

Displays a string on kernel TTY0. This function does NOT take the TTY0 lock.

void _putx( unsigned int value )

Displays a 32 bits word as an hexadecimal string on kernel TTY0. This function does NOT take the TTY0 lock.

void _putl( unsigned long long value )

Displays a 64 bits word as an hexadecimal string on kernel TTY0. This function does NOT take the TTY0 lock.

void _putd( unsigned int value )

Displays a 32 bits word as an decimal string on kernel TTY0. This function does NOT take the TTY0 lock.

void _printf( char* format, ... )

Display a format on kernel TTY0. To provide an atomic display, this function takes the lock protecting exclusive access to TTY0, entering a critical section until the lock is released. Only a limited number of formats are supported:

  • %d : 32 bits signed decimal
  • %u : 32 bits unsigned decimal
  • %x : 32 bits unsigned hexa
  • %l : 64 bits unsigned hexa
  • %c : char
  • %s : string

void _getc( char* byte )

This blocking function uses a polling strategy on the TTY0 status register to get a single character.