| /* |
| * |
| * Copyright (c) 2023 Project CHIP Authors |
| * |
| * 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. |
| */ |
| |
| /* |
| This file is only used to implement weak syscall stubs |
| that gcc-arm-none-eabi 12.2.1 expect to link when using Libc |
| (newlib/libc_nano) |
| */ |
| |
| #include <reent.h> |
| #include <stdarg.h> |
| #include <stddef.h> |
| #include <stdint.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <sys/stat.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #if SILABS_LOG_OUT_UART |
| #include "uart.h" |
| #endif |
| |
| int _close(int file); |
| int _fstat(int file, struct stat * st); |
| int _isatty(int file); |
| int _lseek(int file, int ptr, int dir); |
| int _read(int file, char * ptr, int len); |
| int _write(int file, const char * ptr, int len); |
| |
| /************************************************************************** |
| * @brief |
| * Close a file. |
| * |
| * @param[in] file |
| * File you want to close. |
| * |
| * @return |
| * Returns 0 when the file is closed. |
| **************************************************************************/ |
| int __attribute__((weak)) _close(int file) |
| { |
| (void) file; |
| return 0; |
| } |
| |
| /************************************************************************** |
| * @brief Exit the program. |
| * @param[in] status The value to return to the parent process as the |
| * exit status (not used). |
| **************************************************************************/ |
| void __attribute__((weak)) _exit(int status) |
| { |
| (void) status; |
| while (1) |
| { |
| } /* Hang here forever... */ |
| } |
| |
| /************************************************************************* |
| * @brief |
| * Status of an open file. |
| * |
| * @param[in] file |
| * Check status for this file. |
| * |
| * @param[in] st |
| * Status information. |
| * |
| * @return |
| * Returns 0 when st_mode is set to character special. |
| ************************************************************************/ |
| int __attribute__((weak)) _fstat(int file, struct stat * st) |
| { |
| (void) file; |
| (void) st; |
| return 0; |
| } |
| |
| /************************************************************************** |
| * @brief Get process ID. |
| *************************************************************************/ |
| int __attribute__((weak)) _getpid(void) |
| { |
| return 1; |
| } |
| |
| /************************************************************************** |
| * @brief |
| * Query whether output stream is a terminal. |
| * |
| * @param[in] file |
| * Descriptor for the file. |
| * |
| * @return |
| * Returns 1 when query is done. |
| **************************************************************************/ |
| int __attribute__((weak)) _isatty(int file) |
| { |
| (void) file; |
| return 1; |
| } |
| |
| /************************************************************************** |
| * @brief Send signal to process. |
| * @param[in] pid Process id (not used). |
| * @param[in] sig Signal to send (not used). |
| *************************************************************************/ |
| int __attribute__((weak)) _kill(int pid, int sig) |
| { |
| (void) pid; |
| (void) sig; |
| return -1; |
| } |
| |
| /************************************************************************** |
| * @brief |
| * Set position in a file. |
| * |
| * @param[in] file |
| * Descriptor for the file. |
| * |
| * @param[in] ptr |
| * Poiter to the argument offset. |
| * |
| * @param[in] dir |
| * Directory whence. |
| * |
| * @return |
| * Returns 0 when position is set. |
| *************************************************************************/ |
| int __attribute__((weak)) _lseek(int file, int ptr, int dir) |
| { |
| (void) file; |
| (void) ptr; |
| (void) dir; |
| return 0; |
| } |
| |
| /************************************************************************** |
| * @brief |
| * Read from a file. |
| * |
| * @param[in] file |
| * Descriptor for the file you want to read from. |
| * |
| * @param[in] ptr |
| * Pointer to the chacaters that are beeing read. |
| * |
| * @param[in] len |
| * Number of characters to be read. |
| * |
| * @return |
| * Number of characters that have been read. |
| *************************************************************************/ |
| int __attribute__((weak)) _read(int file, char * ptr, int len) |
| { |
| (void) file; |
| #if SILABS_LOG_OUT_UART |
| return uartConsoleRead(ptr, len); |
| #else |
| (void) ptr; |
| (void) len; |
| #endif |
| return 0; |
| } |
| |
| /************************************************************************** |
| * @brief |
| * Write to a file. |
| * |
| * @param[in] file |
| * Descriptor for the file you want to write to. |
| * |
| * @param[in] ptr |
| * Pointer to the text you want to write |
| * |
| * @param[in] len |
| * Number of characters to be written. |
| * |
| * @return |
| * Number of characters that have been written. |
| **************************************************************************/ |
| int __attribute__((weak)) _write(int file, const char * ptr, int len) |
| { |
| (void) file; |
| #if SILABS_LOG_OUT_UART |
| uartConsoleWrite(ptr, len); |
| #else |
| (void) ptr; |
| #endif |
| |
| return len; |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |