Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

/*
 * Copyright (c) 2018, Intel Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_MISC_LIBC_HOOKS_H_
#define ZEPHYR_INCLUDE_MISC_LIBC_HOOKS_H_

#include <toolchain.h>
#include <stdio.h>
#include <stddef.h>

/*
 * Private header for specifying accessory functions to the C library internals
 * that need to call into the kernel as system calls
 */

#ifdef CONFIG_NEWLIB_LIBC

/* syscall generation ignores preprocessor, ensure this is defined to ensure
 * we don't have compile errors
 */
#define _MLIBC_RESTRICT

__syscall int _zephyr_read(char *buf, int nbytes);

__syscall int _zephyr_write(const void *buf, int nbytes);

#ifdef CONFIG_APP_SHARED_MEM
/* Memory partition containing newlib's globals. This includes all the globals
 * within libc.a and the supporting zephyr hooks, but not the malloc arena.
 */
extern struct k_mem_partition z_newlib_partition;
#endif /* CONFIG_APP_SHARED_MEM */

#else
/* Minimal libc */

__syscall int _zephyr_fputc(int c, FILE *stream);

__syscall size_t _zephyr_fwrite(const void *_MLIBC_RESTRICT ptr, size_t size,
				size_t nitems, FILE *_MLIBC_RESTRICT stream);
#endif /* CONFIG_NEWLIB_LIBC */

#ifdef CONFIG_APP_SHARED_MEM
/* Memory partition containing the libc malloc arena */
extern struct k_mem_partition z_malloc_partition;
#endif

#include <syscalls/libc-hooks.h>

#endif /* ZEPHYR_INCLUDE_MISC_LIBC_HOOKS_H_ */