📄 syscalls.c.svn-base
字号:
/***********************************************************************/
/* */
/* 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -