/** ****************************************************************************** * @file syscalls.c * @author Auto-generated by STM32CubeIDE * @brief STM32CubeIDE Minimal System calls file * * For more information about which c-functions * need which of these lowlevel functions * please consult the Newlib libc-manual ****************************************************************************** * @attention * * Copyright (c) 2020-2023 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* Includes */ #include #include #include #include #include #include #include #include #include "main.h" char *__env[1] = { 0 }; char **environ = __env; int __io_putchar(int ch) { HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch; } __attribute__((weak)) int __io_getchar(void); void initialise_monitor_handles() { } int _getpid(void) { return 1; } int _kill(int pid, int sig) { UNUSED(pid); UNUSED(sig); errno = EINVAL; return -1; } void _exit (int status) { _kill(status, -1); while (1); /* Make sure we hang here */ } __attribute__((weak)) int _read(int file, char *ptr, int len) { UNUSED(file); for (int DataIdx = 0; DataIdx < len; DataIdx ++) { *ptr++ = __io_getchar(); } return len; } __attribute__((weak)) int _write(int file, char *ptr, int len) { UNUSED(file); for (int DataIdx = 0; DataIdx < len; DataIdx ++) { __io_putchar(*ptr++); } return len; } int _close(int file) { UNUSED(file); return -1; } int _fstat(int file, struct stat *st) { UNUSED(file); st->st_mode = S_IFCHR; return 0; } int _isatty(int file) { UNUSED(file); return 1; } int _lseek(int file, int ptr, int dir) { UNUSED(file); UNUSED(ptr); UNUSED(dir); return 0; } int _open(char *path, int flags, ...) { UNUSED(path); UNUSED(flags); /* Pretend like we always fail */ return -1; } int _wait(int *status) { UNUSED(status); errno = ECHILD; return -1; } int _unlink(char *name) { UNUSED(name); errno = ENOENT; return -1; } int _times(struct tms *buf) { UNUSED(buf); return -1; } int _stat(char *file, struct stat *st) { UNUSED(file); st->st_mode = S_IFCHR; return 0; } int _link(char *old, char *new) { UNUSED(old); UNUSED(new); errno = EMLINK; return -1; } int _fork(void) { errno = EAGAIN; return -1; } int _execve(char *name, char **argv, char **env) { UNUSED(name); UNUSED(argv); UNUSED(env); errno = ENOMEM; return -1; }