start implementing FW to control SPN HW
This commit is contained in:
		
							
								
								
									
										56
									
								
								raven_spn/bsp/libwrap/libwrap.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								raven_spn/bsp/libwrap/libwrap.mk
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
# See LICENSE for license details.
 | 
			
		||||
 | 
			
		||||
ifndef _SIFIVE_MK_LIBWRAP
 | 
			
		||||
_SIFIVE_MK_LIBWRAP := # defined
 | 
			
		||||
 | 
			
		||||
LIBWRAP_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
 | 
			
		||||
LIBWRAP_DIR := $(LIBWRAP_DIR:/=)
 | 
			
		||||
 | 
			
		||||
LIBWRAP_SRCS := \
 | 
			
		||||
	stdlib/malloc.c \
 | 
			
		||||
	sys/open.c \
 | 
			
		||||
	sys/lseek.c \
 | 
			
		||||
	sys/read.c \
 | 
			
		||||
	sys/write.c \
 | 
			
		||||
	sys/fstat.c \
 | 
			
		||||
	sys/stat.c \
 | 
			
		||||
	sys/close.c \
 | 
			
		||||
	sys/link.c \
 | 
			
		||||
	sys/unlink.c \
 | 
			
		||||
	sys/execve.c \
 | 
			
		||||
	sys/fork.c \
 | 
			
		||||
	sys/getpid.c \
 | 
			
		||||
	sys/kill.c \
 | 
			
		||||
	sys/wait.c \
 | 
			
		||||
	sys/isatty.c \
 | 
			
		||||
	sys/times.c \
 | 
			
		||||
	sys/sbrk.c \
 | 
			
		||||
	sys/_exit.c \
 | 
			
		||||
	sys/puts.c \
 | 
			
		||||
	misc/write_hex.c
 | 
			
		||||
 | 
			
		||||
LIBWRAP_SRCS := $(foreach f,$(LIBWRAP_SRCS),$(LIBWRAP_DIR)/$(f))
 | 
			
		||||
LIBWRAP_OBJS := $(LIBWRAP_SRCS:.c=.o)
 | 
			
		||||
 | 
			
		||||
LIBWRAP_SYMS := malloc free \
 | 
			
		||||
	open lseek read write fstat stat close link unlink \
 | 
			
		||||
	execve fork getpid kill wait \
 | 
			
		||||
	isatty times sbrk _exit puts
 | 
			
		||||
 | 
			
		||||
LIBWRAP := libwrap.a
 | 
			
		||||
 | 
			
		||||
LINK_DEPS += $(LIBWRAP)
 | 
			
		||||
 | 
			
		||||
LDFLAGS += $(foreach s,$(LIBWRAP_SYMS),-Wl,--wrap=$(s))
 | 
			
		||||
LDFLAGS += $(foreach s,$(LIBWRAP_SYMS),-Wl,--wrap=_$(s))
 | 
			
		||||
LDFLAGS += -L. -Wl,--start-group -lwrap -lc -Wl,--end-group
 | 
			
		||||
 | 
			
		||||
CLEAN_OBJS += $(LIBWRAP_OBJS)
 | 
			
		||||
 | 
			
		||||
$(LIBWRAP_OBJS): %.o: %.c $(HEADERS)
 | 
			
		||||
	$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
 | 
			
		||||
 | 
			
		||||
$(LIBWRAP): $(LIBWRAP_OBJS)
 | 
			
		||||
	$(AR) rcs $@ $^
 | 
			
		||||
 | 
			
		||||
endif # _SIFIVE_MK_LIBWRAP
 | 
			
		||||
							
								
								
									
										19
									
								
								raven_spn/bsp/libwrap/misc/write_hex.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								raven_spn/bsp/libwrap/misc/write_hex.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include "platform.h"
 | 
			
		||||
 | 
			
		||||
void write_hex(int fd, unsigned long int hex)
 | 
			
		||||
{
 | 
			
		||||
  uint8_t ii;
 | 
			
		||||
  uint8_t jj;
 | 
			
		||||
  char towrite;
 | 
			
		||||
  write(fd , "0x", 2);
 | 
			
		||||
  for (ii = sizeof(unsigned long int) * 2 ; ii > 0; ii--) {
 | 
			
		||||
    jj = ii - 1;
 | 
			
		||||
    uint8_t digit = ((hex & (0xF << (jj*4))) >> (jj*4));
 | 
			
		||||
    towrite = digit < 0xA ? ('0' + digit) : ('A' +  (digit - 0xA));
 | 
			
		||||
    write(fd, &towrite, 1);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								raven_spn/bsp/libwrap/stdlib/malloc.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								raven_spn/bsp/libwrap/stdlib/malloc.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
/* See LICENSE for license details. */
 | 
			
		||||
 | 
			
		||||
/* These functions are intended for embedded RV32 systems and are
 | 
			
		||||
   obviously incorrect in general. */
 | 
			
		||||
 | 
			
		||||
void* __wrap_malloc(unsigned long sz)
 | 
			
		||||
{
 | 
			
		||||
  extern void* sbrk(long);
 | 
			
		||||
  void* res = sbrk(sz);
 | 
			
		||||
  if ((long)res == -1)
 | 
			
		||||
    return 0;
 | 
			
		||||
  return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __wrap_free(void* ptr)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								raven_spn/bsp/libwrap/sys/_exit.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								raven_spn/bsp/libwrap/sys/_exit.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include "platform.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
void __wrap_exit(int code)
 | 
			
		||||
{
 | 
			
		||||
  const char message[] = "\nProgam has exited with code:";
 | 
			
		||||
 | 
			
		||||
  write(STDERR_FILENO, message, sizeof(message) - 1);
 | 
			
		||||
  write_hex(STDERR_FILENO, code);
 | 
			
		||||
  write(STDERR_FILENO, "\n", 1);
 | 
			
		||||
 | 
			
		||||
  for (;;);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(exit);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/close.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/close.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_close(int fd)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(EBADF);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(close);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/execve.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/execve.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_execve(const char* name, char* const argv[], char* const env[])
 | 
			
		||||
{
 | 
			
		||||
  return _stub(ENOMEM);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(execve);
 | 
			
		||||
							
								
								
									
										9
									
								
								raven_spn/bsp/libwrap/sys/fork.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								raven_spn/bsp/libwrap/sys/fork.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
 | 
			
		||||
int fork(void)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(EAGAIN);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								raven_spn/bsp/libwrap/sys/fstat.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								raven_spn/bsp/libwrap/sys/fstat.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_fstat(int fd, struct stat* st)
 | 
			
		||||
{
 | 
			
		||||
  if (isatty(fd)) {
 | 
			
		||||
    st->st_mode = S_IFCHR;
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return _stub(EBADF);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(fstat);
 | 
			
		||||
							
								
								
									
										8
									
								
								raven_spn/bsp/libwrap/sys/getpid.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								raven_spn/bsp/libwrap/sys/getpid.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_getpid(void)
 | 
			
		||||
{
 | 
			
		||||
  return 1;
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(getpid);
 | 
			
		||||
							
								
								
									
										13
									
								
								raven_spn/bsp/libwrap/sys/isatty.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								raven_spn/bsp/libwrap/sys/isatty.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_isatty(int fd)
 | 
			
		||||
{
 | 
			
		||||
  if (fd == STDOUT_FILENO || fd == STDERR_FILENO)
 | 
			
		||||
    return 1;
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(isatty);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/kill.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/kill.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_kill(int pid, int sig)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(EINVAL);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(kill);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/link.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/link.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_link(const char *old_name, const char *new_name)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(EMLINK);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(link);
 | 
			
		||||
							
								
								
									
										16
									
								
								raven_spn/bsp/libwrap/sys/lseek.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								raven_spn/bsp/libwrap/sys/lseek.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
off_t __wrap_lseek(int fd, off_t ptr, int dir)
 | 
			
		||||
{
 | 
			
		||||
  if (isatty(fd))
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
  return _stub(EBADF);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(lseek);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/open.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/open.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_open(const char* name, int flags, int mode)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(ENOENT);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(open);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/openat.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/openat.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_openat(int dirfd, const char* name, int flags, int mode)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(ENOENT);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(openat);
 | 
			
		||||
							
								
								
									
										28
									
								
								raven_spn/bsp/libwrap/sys/puts.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								raven_spn/bsp/libwrap/sys/puts.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
#include "platform.h"
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_puts(const char *s)
 | 
			
		||||
{
 | 
			
		||||
  while (*s != '\0') {
 | 
			
		||||
    while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
 | 
			
		||||
    UART0_REG(UART_REG_TXFIFO) = *s;
 | 
			
		||||
 | 
			
		||||
    if (*s == '\n') {
 | 
			
		||||
      while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
 | 
			
		||||
      UART0_REG(UART_REG_TXFIFO) = '\r';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ++s;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(puts);
 | 
			
		||||
							
								
								
									
										32
									
								
								raven_spn/bsp/libwrap/sys/read.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								raven_spn/bsp/libwrap/sys/read.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
#include "platform.h"
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
ssize_t __wrap_read(int fd, void* ptr, size_t len)
 | 
			
		||||
{
 | 
			
		||||
  uint8_t * current = (uint8_t *)ptr;
 | 
			
		||||
  volatile uint32_t * uart_rx = (uint32_t *)(UART0_CTRL_ADDR + UART_REG_RXFIFO);
 | 
			
		||||
  volatile uint8_t * uart_rx_cnt = (uint8_t *)(UART0_CTRL_ADDR + UART_REG_RXCTRL + 2);
 | 
			
		||||
 | 
			
		||||
  ssize_t result = 0;
 | 
			
		||||
 | 
			
		||||
  if (isatty(fd)) {
 | 
			
		||||
    for (current = (uint8_t *)ptr;
 | 
			
		||||
        (current < ((uint8_t *)ptr) + len) && (*uart_rx_cnt > 0);
 | 
			
		||||
        current ++) {
 | 
			
		||||
      *current = *uart_rx;
 | 
			
		||||
      result++;
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return _stub(EBADF);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(read);
 | 
			
		||||
							
								
								
									
										18
									
								
								raven_spn/bsp/libwrap/sys/sbrk.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								raven_spn/bsp/libwrap/sys/sbrk.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
void *__wrap_sbrk(ptrdiff_t incr)
 | 
			
		||||
{
 | 
			
		||||
  extern char _end[];
 | 
			
		||||
  extern char _heap_end[];
 | 
			
		||||
  static char *curbrk = _end;
 | 
			
		||||
 | 
			
		||||
  if ((curbrk + incr < _end) || (curbrk + incr > _heap_end))
 | 
			
		||||
    return NULL - 1;
 | 
			
		||||
 | 
			
		||||
  curbrk += incr;
 | 
			
		||||
  return curbrk - incr;
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(sbrk);
 | 
			
		||||
							
								
								
									
										12
									
								
								raven_spn/bsp/libwrap/sys/stat.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								raven_spn/bsp/libwrap/sys/stat.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_stat(const char* file, struct stat* st)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(EACCES);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(stat);
 | 
			
		||||
							
								
								
									
										10
									
								
								raven_spn/bsp/libwrap/sys/stub.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								raven_spn/bsp/libwrap/sys/stub.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
#ifndef _SIFIVE_SYS_STUB_H
 | 
			
		||||
#define _SIFIVE_SYS_STUB_H
 | 
			
		||||
 | 
			
		||||
static inline int _stub(int err)
 | 
			
		||||
{
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* _SIFIVE_SYS_STUB_H */
 | 
			
		||||
							
								
								
									
										12
									
								
								raven_spn/bsp/libwrap/sys/times.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								raven_spn/bsp/libwrap/sys/times.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <sys/times.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
clock_t __wrap_times(struct tms* buf)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(EACCES);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(times);
 | 
			
		||||
							
								
								
									
										11
									
								
								raven_spn/bsp/libwrap/sys/unlink.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								raven_spn/bsp/libwrap/sys/unlink.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
int __wrap_unlink(const char* name)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(ENOENT);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(unlink);
 | 
			
		||||
							
								
								
									
										9
									
								
								raven_spn/bsp/libwrap/sys/wait.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								raven_spn/bsp/libwrap/sys/wait.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
 | 
			
		||||
int wait(int* status)
 | 
			
		||||
{
 | 
			
		||||
  return _stub(ECHILD);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								raven_spn/bsp/libwrap/sys/weak_under_alias.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								raven_spn/bsp/libwrap/sys/weak_under_alias.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
#ifndef _BSP_LIBWRAP_WEAK_UNDER_ALIAS_H
 | 
			
		||||
#define _BSP_LIBWRAP_WEAK_UNDER_ALIAS_H
 | 
			
		||||
 | 
			
		||||
#define weak_under_alias(name) \
 | 
			
		||||
  extern __typeof (__wrap_##name) __wrap__##name __attribute__ ((weak, alias ("__wrap_"#name)))
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										31
									
								
								raven_spn/bsp/libwrap/sys/write.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								raven_spn/bsp/libwrap/sys/write.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
/* See LICENSE of license details. */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
#include "platform.h"
 | 
			
		||||
#include "stub.h"
 | 
			
		||||
#include "weak_under_alias.h"
 | 
			
		||||
 | 
			
		||||
ssize_t __wrap_write(int fd, const void* ptr, size_t len)
 | 
			
		||||
{
 | 
			
		||||
  const uint8_t * current = (const char *)ptr;
 | 
			
		||||
 | 
			
		||||
  if (isatty(fd)) {
 | 
			
		||||
    for (size_t jj = 0; jj < len; jj++) {
 | 
			
		||||
      while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
 | 
			
		||||
      UART0_REG(UART_REG_TXFIFO) = current[jj];
 | 
			
		||||
 | 
			
		||||
      if (current[jj] == '\n') {
 | 
			
		||||
        while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ;
 | 
			
		||||
        UART0_REG(UART_REG_TXFIFO) = '\r';
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return len;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return _stub(EBADF);
 | 
			
		||||
}
 | 
			
		||||
weak_under_alias(write);
 | 
			
		||||
		Reference in New Issue
	
	Block a user