mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-11-16 12:34:33 +00:00
Compare commits
3 Commits
v1.2.3
...
stable-v1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4dc4179aa | ||
|
|
1f16147f69 | ||
|
|
8e439999e8 |
@@ -27,5 +27,6 @@
|
||||
#include <rtthread.h>
|
||||
|
||||
int devfs_init(void);
|
||||
void rt_console_init(const char* device_name);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
* Date Author Notes
|
||||
* 2005-02-22 Bernard The first version.
|
||||
* 2011-12-08 Bernard Merges rename patch from iamcacy.
|
||||
* 2015-05-27 Bernard Fix the fd clear issue.
|
||||
*/
|
||||
|
||||
#include <dfs.h>
|
||||
@@ -97,7 +98,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
|
||||
{
|
||||
/* clear fd */
|
||||
rt_free(fd->path);
|
||||
rt_memset(fd, 0, sizeof(*fd));
|
||||
fd->path = RT_NULL;
|
||||
|
||||
return -DFS_STATUS_ENOSYS;
|
||||
}
|
||||
@@ -106,7 +107,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
|
||||
{
|
||||
/* clear fd */
|
||||
rt_free(fd->path);
|
||||
rt_memset(fd, 0, sizeof(*fd));
|
||||
fd->path = RT_NULL;
|
||||
|
||||
dfs_log(DFS_DEBUG_INFO, ("open failed"));
|
||||
|
||||
@@ -143,7 +144,7 @@ int dfs_file_close(struct dfs_fd *fd)
|
||||
return result;
|
||||
|
||||
rt_free(fd->path);
|
||||
rt_memset(fd, 0, sizeof(struct dfs_fd));
|
||||
fd->path = RT_NULL;
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -165,7 +166,7 @@ int dfs_file_ioctl(struct dfs_fd *fd, int cmd, void *args)
|
||||
return -DFS_STATUS_EINVAL;
|
||||
|
||||
fs = fd->fs;
|
||||
if (fs->ops->ioctl != RT_NULL)
|
||||
if (fs->ops->ioctl != RT_NULL)
|
||||
return fs->ops->ioctl(fd, cmd, args);
|
||||
|
||||
return -DFS_STATUS_ENOSYS;
|
||||
@@ -652,7 +653,6 @@ static void copyfile(const char *src, const char *dst)
|
||||
extern int mkdir(const char *path, mode_t mode);
|
||||
static void copydir(const char * src, const char * dst)
|
||||
{
|
||||
struct dfs_fd fd;
|
||||
struct dirent dirent;
|
||||
struct stat stat;
|
||||
int length;
|
||||
|
||||
@@ -230,6 +230,7 @@ off_t lseek(int fd, off_t offset, int whence)
|
||||
break;
|
||||
|
||||
default:
|
||||
fd_put(d);
|
||||
rt_set_errno(-DFS_STATUS_EINVAL);
|
||||
|
||||
return -1;
|
||||
@@ -237,6 +238,7 @@ off_t lseek(int fd, off_t offset, int whence)
|
||||
|
||||
if (offset < 0)
|
||||
{
|
||||
fd_put(d);
|
||||
rt_set_errno(-DFS_STATUS_EINVAL);
|
||||
|
||||
return -1;
|
||||
@@ -427,6 +429,7 @@ int mkdir(const char *path, mode_t mode)
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
fd_put(d);
|
||||
fd_put(d);
|
||||
rt_set_errno(result);
|
||||
|
||||
@@ -435,6 +438,7 @@ int mkdir(const char *path, mode_t mode)
|
||||
|
||||
dfs_file_close(d);
|
||||
fd_put(d);
|
||||
fd_put(d);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -211,7 +211,11 @@ int cmd_free(int argc, char** argv)
|
||||
{
|
||||
extern void list_mem(void);
|
||||
|
||||
#ifdef RT_USING_MEMHEAP_AS_HEAP
|
||||
list_memheap();
|
||||
#else
|
||||
list_mem();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
FINSH_FUNCTION_EXPORT_ALIAS(cmd_free, __cmd_free, Show the memory usage in the system.);
|
||||
|
||||
@@ -168,7 +168,8 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
|
||||
|
||||
console_device = rt_console_get_device();
|
||||
if (console_device != 0) rt_device_write(console_device, 0, buf, len);
|
||||
return len;
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ long int atol(const char* s)
|
||||
return sign?-v:v;
|
||||
}
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
void *malloc(size_t size)
|
||||
{
|
||||
return rt_malloc(size);
|
||||
@@ -73,5 +74,6 @@ void *calloc(size_t nelem, size_t elsize)
|
||||
{
|
||||
return rt_calloc(nelem, elsize);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -9,6 +9,15 @@
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS
|
||||
#include <dfs_posix.h>
|
||||
|
||||
#ifdef RT_USING_DFS_DEVFS
|
||||
#include <devfs.h>
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
void libc_system_init(const char* tty_name)
|
||||
{
|
||||
#ifdef RT_USING_DFS
|
||||
@@ -18,13 +27,16 @@ void libc_system_init(const char* tty_name)
|
||||
#error Please enable devfs by defining RT_USING_DFS_DEVFS in rtconfig.h
|
||||
#endif
|
||||
|
||||
/* init console device */
|
||||
/* initialize console device */
|
||||
rt_console_init(tty_name);
|
||||
|
||||
/* open console as stdin/stdout/stderr */
|
||||
fd = open("/dev/console", O_RDONLY, 0); /* for stdin */
|
||||
fd = open("/dev/console", O_WRONLY, 0); /* for stdout */
|
||||
fd = open("/dev/console", O_WRONLY, 0); /* for stderr */
|
||||
|
||||
/* skip warning */
|
||||
fd = fd;
|
||||
#endif
|
||||
|
||||
/* set PATH and HOME */
|
||||
|
||||
@@ -103,5 +103,9 @@ void sys_arch_assert(const char* file, int line);
|
||||
|
||||
#include "string.h"
|
||||
|
||||
#define SYS_ARCH_DECL_PROTECT(level)
|
||||
#define SYS_ARCH_PROTECT(level) rt_enter_critical()
|
||||
#define SYS_ARCH_UNPROTECT(level) rt_exit_critical()
|
||||
|
||||
#endif /* __ARCH_CC_H__ */
|
||||
|
||||
|
||||
@@ -174,6 +174,18 @@ static rt_err_t _rym_trans_data(
|
||||
return -RYM_ERR_SEQ;
|
||||
}
|
||||
|
||||
/* As we are sending C continuously, there is a chance that the
|
||||
* sender(remote) receive an C after sending the first handshake package.
|
||||
* So the sender will interpret it as NAK and re-send the package. So we
|
||||
* just ignore it and proceed. */
|
||||
if (ctx->stage == RYM_STAGE_ESTABLISHED && ctx->buf[1] == 0x00)
|
||||
{
|
||||
*code = RYM_CODE_NONE;
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
ctx->stage = RYM_STAGE_TRANSMITTING;
|
||||
|
||||
/* sanity check */
|
||||
recv_crc = (rt_uint16_t)(*(ctx->buf+tsz-1) << 8) | *(ctx->buf+tsz);
|
||||
if (recv_crc != CRC16(ctx->buf+3, data_sz))
|
||||
@@ -214,7 +226,6 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
|
||||
default:
|
||||
return -RYM_ERR_CODE;
|
||||
};
|
||||
ctx->stage = RYM_STAGE_TRANSMITTING;
|
||||
|
||||
err = _rym_trans_data(ctx, data_sz, &code);
|
||||
if (err != RT_EOK)
|
||||
|
||||
@@ -52,7 +52,12 @@ enum rym_code {
|
||||
#endif
|
||||
/* how many ticks between two handshake code. */
|
||||
#ifndef RYM_CHD_INTV_TICK
|
||||
#define RYM_CHD_INTV_TICK (RT_TICK_PER_SECOND / 4)
|
||||
#define RYM_CHD_INTV_TICK (RT_TICK_PER_SECOND * 3)
|
||||
#endif
|
||||
|
||||
/* how many CAN be sent when user active end the session. */
|
||||
#ifndef RYM_END_SESSION_SEND_CAN_NUM
|
||||
#define RYM_END_SESSION_SEND_CAN_NUM 0x07
|
||||
#endif
|
||||
|
||||
enum rym_stage {
|
||||
@@ -61,7 +66,8 @@ enum rym_stage {
|
||||
RYM_STAGE_ESTABLISHING,
|
||||
/* set when we've got the packet 0 and sent ACK and second C */
|
||||
RYM_STAGE_ESTABLISHED,
|
||||
/* set when the sender respond to our second C */
|
||||
/* set when the sender respond to our second C and recviever got a real
|
||||
* data packet. */
|
||||
RYM_STAGE_TRANSMITTING,
|
||||
/* set when the sender send a EOT */
|
||||
RYM_STAGE_FINISHING,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* File : rtdef.h
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team
|
||||
* COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -50,7 +50,7 @@ extern "C" {
|
||||
/* RT-Thread version information */
|
||||
#define RT_VERSION 1L /**< major version number */
|
||||
#define RT_SUBVERSION 2L /**< minor version number */
|
||||
#define RT_REVISION 3L /**< revise version number */
|
||||
#define RT_REVISION 5L /**< revise version number */
|
||||
|
||||
/* RT-Thread version */
|
||||
#define RTTHREAD_VERSION ((RT_VERSION * 10000) + \
|
||||
|
||||
@@ -1072,8 +1072,8 @@ rt_device_t rt_console_set_device(const char *name)
|
||||
}
|
||||
|
||||
/* set new console device */
|
||||
rt_device_open(new, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_STREAM);
|
||||
_console_device = new;
|
||||
rt_device_open(_console_device, RT_DEVICE_OFLAG_RDWR);
|
||||
}
|
||||
|
||||
return old;
|
||||
|
||||
@@ -517,6 +517,8 @@ void rt_memheap_free(void *ptr)
|
||||
|
||||
/* check magic */
|
||||
RT_ASSERT((header_ptr->magic & RT_MEMHEAP_MASK) == RT_MEMHEAP_MAGIC);
|
||||
/* check whether this block of memory has been over-written. */
|
||||
RT_ASSERT((header_ptr->next->magic & RT_MEMHEAP_MASK) == RT_MEMHEAP_MAGIC);
|
||||
|
||||
/* get pool ptr */
|
||||
heap = header_ptr->pool_ptr;
|
||||
|
||||
@@ -82,7 +82,7 @@ static struct rt_module_symtab *_rt_module_symtab_end = RT_NULL;
|
||||
*/
|
||||
int rt_system_module_init(void)
|
||||
{
|
||||
#ifdef __GNUC__
|
||||
#if defined(__GNUC__) && !defined(__CC_ARM)
|
||||
extern int __rtmsymtab_start;
|
||||
extern int __rtmsymtab_end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user