92 lines
2.2 KiB
C
92 lines
2.2 KiB
C
/* Copyright 2018 Canaan Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef _BSP_SYSCALLS_H
|
|
#define _BSP_SYSCALLS_H
|
|
|
|
#include <machine/syscall.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Definitions for syscall putchar function
|
|
*
|
|
* @param[in] c The char to put
|
|
*
|
|
* @return result
|
|
* - Byte On success, returns the written character.
|
|
* - EOF On failure, returns EOF and sets the error indicator (see ferror()) on stdout.
|
|
*/
|
|
typedef int (*sys_putchar_t)(char c);
|
|
|
|
/**
|
|
* @brief Definitions for syscall getchar function
|
|
*
|
|
* @return byte as int type to get
|
|
* - Byte The character read as an unsigned char cast to an int
|
|
* - EOF EOF on end of file or error, no enough byte to read
|
|
*/
|
|
typedef int (*sys_getchar_t)(void);
|
|
|
|
extern sys_putchar_t sys_putchar;
|
|
extern sys_getchar_t sys_getchar;
|
|
|
|
/**
|
|
* @brief Register putchar function when perform write syscall
|
|
*
|
|
* @param[in] putchar The user-defined putchar function
|
|
*
|
|
* @return None
|
|
*/
|
|
void sys_register_putchar(sys_putchar_t putchar);
|
|
|
|
/**
|
|
* @brief Register getchar function when perform read syscall
|
|
*
|
|
* @param[in] getchar The user-defined getchar function
|
|
*
|
|
* @return None
|
|
*/
|
|
void sys_register_getchar(sys_getchar_t getchar);
|
|
|
|
/**
|
|
* @brief Flush stdin buffer
|
|
*
|
|
* @return None
|
|
*/
|
|
void sys_stdin_flush(void);
|
|
|
|
void __attribute__((noreturn)) sys_exit(int code);
|
|
|
|
/**
|
|
* @brief Get free memory
|
|
*
|
|
* @return The size of free memory
|
|
*/
|
|
size_t get_free_heap_size(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _BSP_SYSCALLS_H */
|
|
|