syscalls.c.svn-base
来自「usb drivers based on s3c2410」· SVN-BASE 代码 · 共 113 行
SVN-BASE
113 行
/***********************************************************************/
/* */
/* SYSCALLS.C: System Calls Remapping */
/* */
/***********************************************************************/
#include <stdlib.h>
#include <reent.h>
#include <sys/stat.h>
#include "lib.h"
_ssize_t _read_r(struct _reent *r, int file, void *ptr, size_t len)
{
char c;
int i;
unsigned char *p;
p = (unsigned char*)ptr;
for (i = 0; i < len; i++)
{
c = sio_getc();
*p++ = c;
sio_putc(c);
if (c == 0x0D && i <= (len - 2))
{
*p = 0x0A;
sio_putc(0x0A);
return i + 2;
}
}
return i;
}
_ssize_t _write_r (
struct _reent *r,
int file,
const void *ptr,
size_t len)
{
int i;
const unsigned char *p;
p = (const unsigned char*) ptr;
for (i = 0; i < len; i++) {
if (*p == '\n' ) sio_putc('\r');
sio_putc(*p++);
}
return len;
}
int _close_r(
struct _reent *r,
int file)
{
return 0;
}
_off_t _lseek_r(
struct _reent *r,
int file,
_off_t ptr,
int dir)
{
return (_off_t)0; /* Always indicate we are at file beginning. */
}
int _fstat_r(
struct _reent *r,
int file,
struct stat *st)
{
/* Always set as character device. */
st->st_mode = S_IFCHR;
/* assigned to strong type with implicit */
/* signed/unsigned conversion. Required by */
/* newlib. */
return 0;
}
int isatty(int file); /* avoid warning */
int isatty(int file)
{
return 1;
}
extern char end[];
static char *heap_ptr; /* Points to current end of the heap. */
void * _sbrk_r(
struct _reent *_s_r,
ptrdiff_t nbytes)
{
char *base;
if (!heap_ptr) {
heap_ptr = end;
}
base = heap_ptr;
heap_ptr += nbytes;
return base;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?