diff --git a/examples/file/listdir.c b/examples/file/listdir.c index d8ea7af82a5b344406a828a105c2a072854634a2..98fbc5ea2cb31be7f4c18061c62d17f521b0a5a0 100644 --- a/examples/file/listdir.c +++ b/examples/file/listdir.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2020, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/examples/file/readspeed.c b/examples/file/readspeed.c index e5073856b43129cbe330994b2a7ec63d4c547f69..ffc19635cf76987c3a599048184b26322f3dce76 100644 --- a/examples/file/readspeed.c +++ b/examples/file/readspeed.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2020, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -46,9 +46,9 @@ void readspeed(const char* filename, int block_size) } tick = rt_tick_get() - tick; - /* close file and release memory */ + /* close file and release memory */ close(fd); - rt_free(buff_ptr); + rt_free(buff_ptr); /* calculate read speed */ rt_kprintf("File read speed: %d byte/s\n", total_length /tick * RT_TICK_PER_SECOND); diff --git a/examples/file/readwrite.c b/examples/file/readwrite.c index 5738323805901db5e7c67df1a85dfb3fdf5536ea..56f3b7e16c77b04a2899018ab6c2d5c4a7a2052a 100644 --- a/examples/file/readwrite.c +++ b/examples/file/readwrite.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2020, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -17,21 +17,21 @@ /* file read write test */ void readwrite(const char* filename) { - int fd; - int index, length; - char* test_data; - char* buffer; - int block_size = TEST_DATA_LEN; - - /* open with write only & create */ - fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0); - if (fd < 0) - { - rt_kprintf("open file for write failed\n"); - return; - } - - test_data = rt_malloc(block_size); + int fd; + int index, length; + char* test_data; + char* buffer; + int block_size = TEST_DATA_LEN; + + /* open with write only & create */ + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0); + if (fd < 0) + { + rt_kprintf("open file for write failed\n"); + return; + } + + test_data = rt_malloc(block_size); if (test_data == RT_NULL) { rt_kprintf("no memory\n"); @@ -48,94 +48,94 @@ void readwrite(const char* filename) return; } - /* prepare some data */ - for (index = 0; index < block_size; index ++) - { - test_data[index] = index + 27; - } - - /* write to file */ - length = write(fd, test_data, block_size); - if (length != block_size) - { - rt_kprintf("write data failed\n"); - close(fd); - goto __exit; - } - - /* close file */ - close(fd); - - /* reopen the file with append to the end */ - fd = open(filename, O_WRONLY | O_CREAT | O_APPEND, 0); - if (fd < 0) - { - rt_kprintf("open file for append write failed\n"); - goto __exit;; - } - - length = write(fd, test_data, block_size); - if (length != block_size) - { - rt_kprintf("append write data failed\n"); - close(fd); - goto __exit; - } - /* close the file */ - close(fd); - - /* open the file for data validation. */ - fd = open(filename, O_RDONLY, 0); - if (fd < 0) - { - rt_kprintf("check: open file for read failed\n"); - goto __exit; - } - - /* read the data (should be the data written by the first time ) */ - length = read(fd, buffer, block_size); - if (length != block_size) - { - rt_kprintf("check: read file failed\n"); - close(fd); - goto __exit; - } - - /* validate */ - for (index = 0; index < block_size; index ++) - { - if (test_data[index] != buffer[index]) - { - rt_kprintf("check: check data failed at %d\n", index); - close(fd); - goto __exit; - } - } - - /* read the data (should be the second time data) */ - length = read(fd, buffer, block_size); - if (length != block_size) - { - rt_kprintf("check: read file failed\n"); - close(fd); - goto __exit; - } - - /* validate */ - for (index = 0; index < block_size; index ++) - { - if (test_data[index] != buffer[index]) - { - rt_kprintf("check: check data failed at %d\n", index); - close(fd); - goto __exit; - } - } - - /* close the file */ - close(fd); - /* print result */ - rt_kprintf("read/write test successful!\n"); + /* prepare some data */ + for (index = 0; index < block_size; index ++) + { + test_data[index] = index + 27; + } + + /* write to file */ + length = write(fd, test_data, block_size); + if (length != block_size) + { + rt_kprintf("write data failed\n"); + close(fd); + goto __exit; + } + + /* close file */ + close(fd); + + /* reopen the file with append to the end */ + fd = open(filename, O_WRONLY | O_CREAT | O_APPEND, 0); + if (fd < 0) + { + rt_kprintf("open file for append write failed\n"); + goto __exit;; + } + + length = write(fd, test_data, block_size); + if (length != block_size) + { + rt_kprintf("append write data failed\n"); + close(fd); + goto __exit; + } + /* close the file */ + close(fd); + + /* open the file for data validation. */ + fd = open(filename, O_RDONLY, 0); + if (fd < 0) + { + rt_kprintf("check: open file for read failed\n"); + goto __exit; + } + + /* read the data (should be the data written by the first time ) */ + length = read(fd, buffer, block_size); + if (length != block_size) + { + rt_kprintf("check: read file failed\n"); + close(fd); + goto __exit; + } + + /* validate */ + for (index = 0; index < block_size; index ++) + { + if (test_data[index] != buffer[index]) + { + rt_kprintf("check: check data failed at %d\n", index); + close(fd); + goto __exit; + } + } + + /* read the data (should be the second time data) */ + length = read(fd, buffer, block_size); + if (length != block_size) + { + rt_kprintf("check: read file failed\n"); + close(fd); + goto __exit; + } + + /* validate */ + for (index = 0; index < block_size; index ++) + { + if (test_data[index] != buffer[index]) + { + rt_kprintf("check: check data failed at %d\n", index); + close(fd); + goto __exit; + } + } + + /* close the file */ + close(fd); + /* print result */ + rt_kprintf("read/write test successful!\n"); __exit: rt_free(test_data); diff --git a/examples/file/seekdir.c b/examples/file/seekdir.c index d6a33426b402582bfae41b86baf648ef6d87a0d3..efadd3a1c89d3cff857ea446c28b35f03ba476f2 100644 --- a/examples/file/seekdir.c +++ b/examples/file/seekdir.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2020, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -12,35 +12,35 @@ void seekdir_test(void) { - DIR * dirp; - long save3 = 0; - int i = 0; - struct dirent *dp; + DIR * dirp; + long save3 = 0; + int i = 0; + struct dirent *dp; - dirp = opendir ("/"); - save3 = telldir(dirp); - for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp)) - { - rt_kprintf("direntry: %s\n", dp->d_name); + dirp = opendir ("/"); + save3 = telldir(dirp); + for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp)) + { + rt_kprintf("direntry: %s\n", dp->d_name); - /* save the pointer of the third directory */ - if (i++ == 3) - { - save3 = telldir(dirp); - } - } + /* save the pointer of the third directory */ + if (i++ == 3) + { + save3 = telldir(dirp); + } + } - /* get back to the third directory */ - seekdir (dirp, save3); - rt_kprintf("seek dientry to: %d\n", save3); - for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp)) - { - rt_kprintf("direntry: %s\n", dp->d_name); - } + /* get back to the third directory */ + seekdir (dirp, save3); + rt_kprintf("seek dientry to: %d\n", save3); + for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp)) + { + rt_kprintf("direntry: %s\n", dp->d_name); + } - /* close the directory */ - closedir (dirp); -} + /* close the directory */ + closedir (dirp); +} #ifdef RT_USING_FINSH #include diff --git a/examples/file/writespeed.c b/examples/file/writespeed.c index 60dd900a68db9fb9b527b8aac4122b88dc261913..680761583c360292a4eb008f9152416a8530036a 100644 --- a/examples/file/writespeed.c +++ b/examples/file/writespeed.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2020, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/examples/kernel/tc_comm.h b/examples/kernel/tc_comm.h index aee1fec2d26c7ebcea1e0ab3bb212fda11d8dbcb..c72c91ad53a5a16e3257b5897de6b85ea62f05b6 100644 --- a/examples/kernel/tc_comm.h +++ b/examples/kernel/tc_comm.h @@ -1,7 +1,7 @@ #ifndef __TC_COMM_H__ #define __TC_COMM_H__ -/* +/* * RT-Thread TestCase * */ diff --git a/examples/kernel/timer_control.c b/examples/kernel/timer_control.c index 9fcb0d4c4d92417d91d907f1e0e0e16a9cdbf39c..d1f782fcce873fe33f64d180753ea1326cd42437 100644 --- a/examples/kernel/timer_control.c +++ b/examples/kernel/timer_control.c @@ -14,7 +14,7 @@ static rt_uint8_t count; static void timeout1(void* parameter) { rt_tick_t timeout = 50; - + rt_kprintf("periodic timer is timeout\n"); count ++; diff --git a/examples/kernel/timer_timeout.c b/examples/kernel/timer_timeout.c index d1a7099e2ee9c8075b841efa536ada68c155d843..4d9a4fcc1d088c57c8bba4122123ea319fb510d7 100644 --- a/examples/kernel/timer_timeout.c +++ b/examples/kernel/timer_timeout.c @@ -1,21 +1,21 @@ /* - * 程序清单:消息队列例程 + * 绋嬪簭娓呭崟锛氭秷鎭槦鍒椾緥绋 * - * 这个程序会创建3个动态线程,一个线程会从消息队列中收取消息;一个线程会定时给消 - * 息队列发送消息;一个线程会定时给消息队列发送紧急消息。 + * 杩欎釜绋嬪簭浼氬垱寤3涓姩鎬佺嚎绋嬶紝涓涓嚎绋嬩細浠庢秷鎭槦鍒椾腑鏀跺彇娑堟伅锛涗竴涓嚎绋嬩細瀹氭椂缁欐秷 + * 鎭槦鍒楀彂閫佹秷鎭紱涓涓嚎绋嬩細瀹氭椂缁欐秷鎭槦鍒楀彂閫佺揣鎬ユ秷鎭 */ #include #include "tc_comm.h" -/* 指向线程控制块的指针 */ +/* 鎸囧悜绾跨▼鎺у埗鍧楃殑鎸囬拡 */ static rt_thread_t tid = RT_NULL; -/* 消息队列控制块 */ +/* 娑堟伅闃熷垪鎺у埗鍧 */ static struct rt_messagequeue mq; -/* 消息队列中用到的放置消息的内存池 */ +/* 娑堟伅闃熷垪涓敤鍒扮殑鏀剧疆娑堟伅鐨勫唴瀛樻睜 */ static char msg_pool[2048]; -/* 定时器的控制块 */ +/* 瀹氭椂鍣ㄧ殑鎺у埗鍧 */ static struct rt_timer timer; static rt_uint16_t no = 0; static void timer_timeout(void* parameter) @@ -27,24 +27,24 @@ static void timer_timeout(void* parameter) rt_mq_send(&mq, &buf[0], length); } -/* 线程入口函数 */ +/* 绾跨▼鍏ュ彛鍑芥暟 */ static void thread_entry(void* parameter) { char buf[64]; rt_err_t result; - /* 初始化定时器 */ - rt_timer_init(&timer, "timer", /* 定时器名字是 timer1 */ - timer_timeout, /* 超时时回调的处理函数 */ - RT_NULL, /* 超时函数的入口参数 */ - 1, /* 定时长度,以OS Tick为单位,即1个OS Tick */ - RT_TIMER_FLAG_PERIODIC); /* 周期性定时器 */ + /* 鍒濆鍖栧畾鏃跺櫒 */ + rt_timer_init(&timer, "timer", /* 瀹氭椂鍣ㄥ悕瀛楁槸 timer1 */ + timer_timeout, /* 瓒呮椂鏃跺洖璋冪殑澶勭悊鍑芥暟 */ + RT_NULL, /* 瓒呮椂鍑芥暟鐨勫叆鍙e弬鏁 */ + 1, /* 瀹氭椂闀垮害锛屼互OS Tick涓哄崟浣嶏紝鍗1涓狾S Tick */ + RT_TIMER_FLAG_PERIODIC); /* 鍛ㄦ湡鎬у畾鏃跺櫒 */ while (1) { rt_memset(&buf[0], 0, sizeof(buf)); - /* 从消息队列中接收消息 */ + /* 浠庢秷鎭槦鍒椾腑鎺ユ敹娑堟伅 */ result = rt_mq_recv(&mq, &buf[0], sizeof(buf), 1); if (result == RT_EOK) { @@ -59,16 +59,16 @@ static void thread_entry(void* parameter) int timer_timeout_init() { - /* 初始化消息队列 */ - rt_mq_init(&mq, "mqt", - &msg_pool[0], /* 内存池指向msg_pool */ - 128 - sizeof(void*), /* 每个消息的大小是 128 - void* */ - sizeof(msg_pool), /* 内存池的大小是msg_pool的大小 */ - RT_IPC_FLAG_FIFO); /* 如果有多个线程等待,按照先来先得到的方法分配消息 */ - - /* 创建线程 */ + /* 鍒濆鍖栨秷鎭槦鍒 */ + rt_mq_init(&mq, "mqt", + &msg_pool[0], /* 鍐呭瓨姹犳寚鍚憁sg_pool */ + 128 - sizeof(void*), /* 姣忎釜娑堟伅鐨勫ぇ灏忔槸 128 - void* */ + sizeof(msg_pool), /* 鍐呭瓨姹犵殑澶у皬鏄痬sg_pool鐨勫ぇ灏 */ + RT_IPC_FLAG_FIFO); /* 濡傛灉鏈夊涓嚎绋嬬瓑寰咃紝鎸夌収鍏堟潵鍏堝緱鍒扮殑鏂规硶鍒嗛厤娑堟伅 */ + + /* 鍒涘缓绾跨▼ */ tid = rt_thread_create("t", - thread_entry, RT_NULL, /* 线程入口是thread_entry, 入口参数是RT_NULL */ + thread_entry, RT_NULL, /* 绾跨▼鍏ュ彛鏄痶hread_entry, 鍏ュ彛鍙傛暟鏄疪T_NULL */ THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid != RT_NULL) rt_thread_startup(tid); @@ -81,38 +81,38 @@ int timer_timeout_init() #ifdef RT_USING_TC static void _tc_cleanup() { - /* 调度器上锁,上锁后,将不再切换到其他线程,仅响应中断 */ + /* 璋冨害鍣ㄤ笂閿侊紝涓婇攣鍚庯紝灏嗕笉鍐嶅垏鎹㈠埌鍏朵粬绾跨▼锛屼粎鍝嶅簲涓柇 */ rt_enter_critical(); - /* 删除线程 */ + /* 鍒犻櫎绾跨▼ */ if (tid != RT_NULL && tid->stat != RT_THREAD_CLOSE) rt_thread_delete(tid); - /* 执行消息队列对象脱离 */ + /* 鎵ц娑堟伅闃熷垪瀵硅薄鑴辩 */ rt_mq_detach(&mq); - /* 执行定时器脱离 */ + /* 鎵ц瀹氭椂鍣ㄨ劚绂 */ rt_timer_detach(&timer); - /* 调度器解锁 */ + /* 璋冨害鍣ㄨВ閿 */ rt_exit_critical(); - /* 设置TestCase状态 */ + /* 璁剧疆TestCase鐘舵 */ tc_done(TC_STAT_PASSED); } int _tc_timer_timeout() { - /* 设置TestCase清理回调函数 */ + /* 璁剧疆TestCase娓呯悊鍥炶皟鍑芥暟 */ tc_cleanup(_tc_cleanup); timer_timeout_init(); - /* 返回TestCase运行的最长时间 */ + /* 杩斿洖TestCase杩愯鐨勬渶闀挎椂闂 */ return 100; } -/* 输出函数命令到finsh shell中 */ +/* 杈撳嚭鍑芥暟鍛戒护鍒癴insh shell涓 */ FINSH_FUNCTION_EXPORT(_tc_timer_timeout, a thread timer testcase); #else -/* 用户应用入口 */ +/* 鐢ㄦ埛搴旂敤鍏ュ彛 */ int rt_application_init() { timer_timeout_init(); diff --git a/examples/libc/dirent.c b/examples/libc/dirent.c index 75604f6067b8c00c98e317bba10239f59510e514..06b72110e3ae61dc94d923b32da937920a88f39e 100644 --- a/examples/libc/dirent.c +++ b/examples/libc/dirent.c @@ -11,46 +11,46 @@ #include int libc_dirent() { - DIR * dirp; - long int save3 = 0; - long int cur; - int i = 0; - int result = 0; - struct dirent *dp; - - dirp = opendir("/"); - for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) - { - /* save position 3 (after fourth entry) */ - if (i++ == 3) - save3 = telldir(dirp); - - printf("%s\n", dp->d_name); - - /* stop at 400 (just to make sure dirp->__offset and dirp->__size are - scrambled */ - if (i == 400) - break; - } - - printf("going back past 4-th entry...\n"); - - /* go back to saved entry */ - seekdir(dirp, save3); - - /* Check whether telldir equals to save3 now. */ - cur = telldir(dirp); - if (cur != save3) - { - printf("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur); - result = 1; - } - - /* print remaining files (3-last) */ - for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) - printf("%s\n", dp->d_name); - - closedir(dirp); - return result; + DIR * dirp; + long int save3 = 0; + long int cur; + int i = 0; + int result = 0; + struct dirent *dp; + + dirp = opendir("/"); + for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) + { + /* save position 3 (after fourth entry) */ + if (i++ == 3) + save3 = telldir(dirp); + + printf("%s\n", dp->d_name); + + /* stop at 400 (just to make sure dirp->__offset and dirp->__size are + scrambled */ + if (i == 400) + break; + } + + printf("going back past 4-th entry...\n"); + + /* go back to saved entry */ + seekdir(dirp, save3); + + /* Check whether telldir equals to save3 now. */ + cur = telldir(dirp); + if (cur != save3) + { + printf("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur); + result = 1; + } + + /* print remaining files (3-last) */ + for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) + printf("%s\n", dp->d_name); + + closedir(dirp); + return result; } FINSH_FUNCTION_EXPORT(libc_dirent, dirent test for libc); diff --git a/examples/libc/env.c b/examples/libc/env.c index ca67ac2e2a2c0ab4e02a501a304817c42273a449..6bc8ba4d7eb343a4b558b256dd0284e869be66fc 100644 --- a/examples/libc/env.c +++ b/examples/libc/env.c @@ -10,9 +10,9 @@ int libc_env() { - printf("PATH=%s\n", getenv("PATH")); - putenv("foo=bar"); - printf("foo=%s\n", getenv("foo")); - return 0; + printf("PATH=%s\n", getenv("PATH")); + putenv("foo=bar"); + printf("foo=%s\n", getenv("foo")); + return 0; } FINSH_FUNCTION_EXPORT(libc_env, get/set_env test); diff --git a/examples/libc/ex1.c b/examples/libc/ex1.c index 2acbfc3a39cb66b060e4b1d21f414101eb72fa91..f03fefbc00ae6e641c02708a48f83fef7e00b56a 100644 --- a/examples/libc/ex1.c +++ b/examples/libc/ex1.c @@ -9,29 +9,29 @@ static void *process(void * arg) { - int i; - printf("Starting process %s\n", (char *)arg); - for (i = 0; i < 10000; i++) - write(1, (char *) arg, 1); - return NULL; + int i; + printf("Starting process %s\n", (char *)arg); + for (i = 0; i < 10000; i++) + write(1, (char *) arg, 1); + return NULL; } #define sucfail(r) (r != 0 ? "failed" : "succeeded") int libc_ex1(void) { - int pret, ret = 0; - pthread_t th_a, th_b; - void *retval; + int pret, ret = 0; + pthread_t th_a, th_b; + void *retval; - ret += (pret = pthread_create(&th_a, NULL, process, (void *)"a")); - printf("create a %s %d\n", sucfail(pret), pret); - ret += (pret = pthread_create(&th_b, NULL, process, (void *)"b")); - printf("create b %s %d\n", sucfail(pret), pret); - ret += (pret = pthread_join(th_a, &retval)); - printf("join a %s %d\n", sucfail(pret), pret); - ret += (pret = pthread_join(th_b, &retval)); - printf("join b %s %d\n", sucfail(pret), pret); - return ret; + ret += (pret = pthread_create(&th_a, NULL, process, (void *)"a")); + printf("create a %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_create(&th_b, NULL, process, (void *)"b")); + printf("create b %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_join(th_a, &retval)); + printf("join a %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_join(th_b, &retval)); + printf("join b %s %d\n", sucfail(pret), pret); + return ret; } #include FINSH_FUNCTION_EXPORT(libc_ex1, example 1 for libc); diff --git a/examples/libc/ex6.c b/examples/libc/ex6.c index dea6ead8cb1fdb8cf822bd7d131b9df058bd52d9..ecf813fef8bb1da2cc0d7ae5ee6584d2966e07aa 100644 --- a/examples/libc/ex6.c +++ b/examples/libc/ex6.c @@ -7,31 +7,31 @@ #define usleep rt_thread_sleep static void *test_thread(void *v_param) { - return NULL; + return NULL; } int libc_ex6(void) { - unsigned long count; + unsigned long count; - setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stdout, NULL, _IONBF, 0); - for (count = 0; count < 2000; ++count) { - pthread_t thread; - int status; + for (count = 0; count < 2000; ++count) { + pthread_t thread; + int status; - status = pthread_create(&thread, NULL, test_thread, NULL); - if (status != 0) { - printf("status = %d, count = %lu: %s\n", status, count, strerror( - errno)); - return 1; - } else { - printf("count = %lu\n", count); - } - /* pthread_detach (thread); */ - pthread_join(thread, NULL); - usleep(10); - } - return 0; + status = pthread_create(&thread, NULL, test_thread, NULL); + if (status != 0) { + printf("status = %d, count = %lu: %s\n", status, count, strerror( + errno)); + return 1; + } else { + printf("count = %lu\n", count); + } + /* pthread_detach (thread); */ + pthread_join(thread, NULL); + usleep(10); + } + return 0; } #include FINSH_FUNCTION_EXPORT(libc_ex6, example 6 for libc); diff --git a/examples/libc/ex7.c b/examples/libc/ex7.c index 859d18e7bdb8fed0cebb4e0ba36c4d9410d41ceb..e6473d48c2e210880d57a714dce8389198acb821 100644 --- a/examples/libc/ex7.c +++ b/examples/libc/ex7.c @@ -14,88 +14,88 @@ /* Our event variable using a condition variable contruct. */ typedef struct { - pthread_mutex_t mutex; - pthread_cond_t cond; - int flag; + pthread_mutex_t mutex; + pthread_cond_t cond; + int flag; } event_t; /* Global event to signal main thread the timeout of the child thread. */ event_t main_event; static void *test_thread(void *ms_param) { - int status = 0; - event_t foo; - struct timespec time; - struct timeval now; - long ms = (long) ms_param; - - /* initialize cond var */ - pthread_cond_init(&foo.cond, NULL); - pthread_mutex_init(&foo.mutex, NULL); - foo.flag = 0; - - /* set the time out value */ - printf("waiting %ld ms ...\n", ms); - gettimeofday(&now, NULL); - time.tv_sec = now.tv_sec + ms / 1000 + (now.tv_usec + (ms % 1000) * 1000) - / 1000000; - time.tv_nsec = ((now.tv_usec + (ms % 1000) * 1000) % 1000000) * 1000; - - /* Just use this to test the time out. The cond var is never signaled. */ - pthread_mutex_lock(&foo.mutex); - while (foo.flag == 0 && status != ETIMEDOUT) { - status = pthread_cond_timedwait(&foo.cond, &foo.mutex, &time); - } - pthread_mutex_unlock(&foo.mutex); - - /* post the main event */ - pthread_mutex_lock(&main_event.mutex); - main_event.flag = 1; - pthread_cond_signal(&main_event.cond); - pthread_mutex_unlock(&main_event.mutex); - - /* that's it, bye */ - return (void*) status; + int status = 0; + event_t foo; + struct timespec time; + struct timeval now; + long ms = (long) ms_param; + + /* initialize cond var */ + pthread_cond_init(&foo.cond, NULL); + pthread_mutex_init(&foo.mutex, NULL); + foo.flag = 0; + + /* set the time out value */ + printf("waiting %ld ms ...\n", ms); + gettimeofday(&now, NULL); + time.tv_sec = now.tv_sec + ms / 1000 + (now.tv_usec + (ms % 1000) * 1000) + / 1000000; + time.tv_nsec = ((now.tv_usec + (ms % 1000) * 1000) % 1000000) * 1000; + + /* Just use this to test the time out. The cond var is never signaled. */ + pthread_mutex_lock(&foo.mutex); + while (foo.flag == 0 && status != ETIMEDOUT) { + status = pthread_cond_timedwait(&foo.cond, &foo.mutex, &time); + } + pthread_mutex_unlock(&foo.mutex); + + /* post the main event */ + pthread_mutex_lock(&main_event.mutex); + main_event.flag = 1; + pthread_cond_signal(&main_event.cond); + pthread_mutex_unlock(&main_event.mutex); + + /* that's it, bye */ + return (void*) status; } int libc_ex7(void) { - unsigned long count; - - setvbuf(stdout, NULL, _IONBF, 0); - - /* initialize main event cond var */ - pthread_cond_init(&main_event.cond, NULL); - pthread_mutex_init(&main_event.mutex, NULL); - main_event.flag = 0; - - for (count = 0; count < 20; ++count) { - pthread_t thread; - int status; - - /* pass down the milli-second timeout in the void* param */ - status = pthread_create(&thread, NULL, test_thread, (void*) (count - * 100)); - if (status != 0) { - printf("status = %d, count = %lu: %s\n", status, count, strerror( - errno)); - return 1; - } else { - - /* wait for the event posted by the child thread */ - pthread_mutex_lock(&main_event.mutex); - while (main_event.flag == 0) { - pthread_cond_wait(&main_event.cond, &main_event.mutex); - } - main_event.flag = 0; - pthread_mutex_unlock(&main_event.mutex); - - printf("count = %lu\n", count); - } - - usleep(10); - } - - return 0; + unsigned long count; + + setvbuf(stdout, NULL, _IONBF, 0); + + /* initialize main event cond var */ + pthread_cond_init(&main_event.cond, NULL); + pthread_mutex_init(&main_event.mutex, NULL); + main_event.flag = 0; + + for (count = 0; count < 20; ++count) { + pthread_t thread; + int status; + + /* pass down the milli-second timeout in the void* param */ + status = pthread_create(&thread, NULL, test_thread, (void*) (count + * 100)); + if (status != 0) { + printf("status = %d, count = %lu: %s\n", status, count, strerror( + errno)); + return 1; + } else { + + /* wait for the event posted by the child thread */ + pthread_mutex_lock(&main_event.mutex); + while (main_event.flag == 0) { + pthread_cond_wait(&main_event.cond, &main_event.mutex); + } + main_event.flag = 0; + pthread_mutex_unlock(&main_event.mutex); + + printf("count = %lu\n", count); + } + + usleep(10); + } + + return 0; } #include FINSH_FUNCTION_EXPORT(libc_ex7, example 7 for libc); diff --git a/examples/libc/file.c b/examples/libc/file.c index f366e047029a714fcc3b747a0c9e6dc84917adf4..ea50e6162861341e4ddf24a6c385aa366e64b31c 100644 --- a/examples/libc/file.c +++ b/examples/libc/file.c @@ -14,503 +14,503 @@ const char* text = "this is a test string\n"; void libc_fstat() { - int fd; - struct stat s; - - fd = open("/tmp/tt.txt", O_WRONLY | O_CREAT, 0); - if (fd < 0) - { - printf("open failed\n"); - return; - } - - write(fd, text, strlen(text) + 1); - printf("begin: %d\n", lseek(fd, 0, SEEK_SET)); - printf("end: %d\n", lseek(fd, 0, SEEK_END)); - - printf("fstat result: %d\n", fstat(fd, &s)); - close(fd); + int fd; + struct stat s; + + fd = open("/tmp/tt.txt", O_WRONLY | O_CREAT, 0); + if (fd < 0) + { + printf("open failed\n"); + return; + } + + write(fd, text, strlen(text) + 1); + printf("begin: %d\n", lseek(fd, 0, SEEK_SET)); + printf("end: %d\n", lseek(fd, 0, SEEK_END)); + + printf("fstat result: %d\n", fstat(fd, &s)); + close(fd); } FINSH_FUNCTION_EXPORT(libc_fstat, fstat test for libc); void libc_lseek() { - int fd; - - fd = open("/tmp/tt.txt", O_WRONLY | O_CREAT, 0); - if (fd < 0) - { - printf("open failed\n"); - return; - } - - write(fd, text, strlen(text) + 1); - printf("begin: %d\n", lseek(fd, 0, SEEK_SET)); - printf("end: %d\n", lseek(fd, 0, SEEK_END)); - close(fd); + int fd; + + fd = open("/tmp/tt.txt", O_WRONLY | O_CREAT, 0); + if (fd < 0) + { + printf("open failed\n"); + return; + } + + write(fd, text, strlen(text) + 1); + printf("begin: %d\n", lseek(fd, 0, SEEK_SET)); + printf("end: %d\n", lseek(fd, 0, SEEK_END)); + close(fd); } FINSH_FUNCTION_EXPORT(libc_lseek, lseek test for libc); void sleep(int tick) { - rt_thread_sleep(tick); + rt_thread_sleep(tick); } int libc_fseek(void) { - const char *tmpdir; - char *fname; - int fd; - FILE *fp; - const char outstr[] = "hello world!\n"; - char strbuf[sizeof outstr]; - char buf[200]; - struct stat st1; - struct stat st2; - int result = 0; - - tmpdir = getenv("TMPDIR"); - if (tmpdir == NULL || tmpdir[0] == '\0') - tmpdir = "/tmp"; - - asprintf(&fname, "%s/tst-fseek.XXXXXX", tmpdir); - if (fname == NULL) - { - fprintf(stderr, "cannot generate name for temporary file: %s\n", - strerror(errno)); - return 1; - } - - /* Create a temporary file. */ - fd = mkstemp(fname); - if (fd == -1) - { - fprintf(stderr, "cannot open temporary file: %s\n", strerror(errno)); - return 1; - } - - fp = fdopen(fd, "w+"); - if (fp == NULL) - { - fprintf(stderr, "cannot get FILE for temporary file: %s\n", strerror( - errno)); - return 1; - } - setbuffer(fp, strbuf, sizeof(outstr) - 1); - - if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: write error\n", __LINE__); - result = 1; - goto out; - } - - /* The EOF flag must be reset. */ - if (fgetc(fp) != EOF) - { - printf("%d: managed to read at end of file\n", __LINE__); - result = 1; - } - else if (!feof(fp)) - { - printf("%d: EOF flag not set\n", __LINE__); - result = 1; - } - if (fseek(fp, 0, SEEK_CUR) != 0) - { - printf("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__); - result = 1; - } - else if (feof(fp)) - { - printf("%d: fseek() didn't reset EOF flag\n", __LINE__); - result = 1; - } - - /* Do the same for fseeko(). */ - if (fgetc(fp) != EOF) - { - printf("%d: managed to read at end of file\n", __LINE__); - result = 1; - } - else if (!feof(fp)) - { - printf("%d: EOF flag not set\n", __LINE__); - result = 1; - } - if (fseeko(fp, 0, SEEK_CUR) != 0) - { - printf("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__); - result = 1; - } - else if (feof(fp)) - { - printf("%d: fseek() didn't reset EOF flag\n", __LINE__); - result = 1; - } - - /* Go back to the beginning of the file: absolute. */ - if (fseek(fp, 0, SEEK_SET) != 0) - { - printf("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); - result = 1; - } - else if (fflush(fp) != 0) - { - printf("%d: fflush() failed\n", __LINE__); - result = 1; - } - else if (lseek(fd, 0, SEEK_CUR) != 0) - { - int pos = lseek(fd, 0, SEEK_CUR); - printf("%d: lseek() returned different position, pos %d\n", __LINE__, - pos); - result = 1; - } - else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: fread() failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) - { - printf("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); - result = 1; - } - - /* Now with fseeko. */ - if (fseeko(fp, 0, SEEK_SET) != 0) - { - printf("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); - result = 1; - } - else if (fflush(fp) != 0) - { - printf("%d: fflush() failed\n", __LINE__); - result = 1; - } - else if (lseek(fd, 0, SEEK_CUR) != 0) - { - printf("%d: lseek() returned different position\n", __LINE__); - result = 1; - } - else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: fread() failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) - { - printf("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); - result = 1; - } - - /* Go back to the beginning of the file: relative. */ - if (fseek(fp, -((int) sizeof(outstr) - 1), SEEK_CUR) != 0) - { - printf("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); - result = 1; - } - else if (fflush(fp) != 0) - { - printf("%d: fflush() failed\n", __LINE__); - result = 1; - } - else if (lseek(fd, 0, SEEK_CUR) != 0) - { - printf("%d: lseek() returned different position\n", __LINE__); - result = 1; - } - else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: fread() failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) - { - printf("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); - result = 1; - } - - /* Now with fseeko. */ - if (fseeko(fp, -((int) sizeof(outstr) - 1), SEEK_CUR) != 0) - { - printf("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); - result = 1; - } - else if (fflush(fp) != 0) - { - printf("%d: fflush() failed\n", __LINE__); - result = 1; - } - else if (lseek(fd, 0, SEEK_CUR) != 0) - { - printf("%d: lseek() returned different position\n", __LINE__); - result = 1; - } - else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: fread() failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) - { - printf("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); - result = 1; - } - - /* Go back to the beginning of the file: from the end. */ - if (fseek(fp, -((int) sizeof(outstr) - 1), SEEK_END) != 0) - { - printf("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); - result = 1; - } - else if (fflush(fp) != 0) - { - printf("%d: fflush() failed\n", __LINE__); - result = 1; - } - else if (lseek(fd, 0, SEEK_CUR) != 0) - { - printf("%d: lseek() returned different position\n", __LINE__); - result = 1; - } - else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: fread() failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) - { - printf("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); - result = 1; - } - - /* Now with fseeko. */ - if (fseeko(fp, -((int) sizeof(outstr) - 1), SEEK_END) != 0) - { - printf("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); - result = 1; - } - else if (fflush(fp) != 0) - { - printf("%d: fflush() failed\n", __LINE__); - result = 1; - } - else if (lseek(fd, 0, SEEK_CUR) != 0) - { - printf("%d: lseek() returned different position\n", __LINE__); - result = 1; - } - else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: fread() failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) - { - printf("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); - result = 1; - } - - if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: write error 2\n", __LINE__); - result = 1; - goto out; - } - - if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: write error 3\n", __LINE__); - result = 1; - goto out; - } - - if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: write error 4\n", __LINE__); - result = 1; - goto out; - } - - if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) - { - printf("%d: write error 5\n", __LINE__); - result = 1; - goto out; - } - - if (fputc('1', fp) == EOF || fputc('2', fp) == EOF) - { - printf("%d: cannot add characters at the end\n", __LINE__); - result = 1; - goto out; - } - - /* Check the access time. */ - if (fstat(fd, &st1) < 0) - { - printf("%d: fstat64() before fseeko() failed\n\n", __LINE__); - result = 1; - } - else - { - sleep(1); - - if (fseek(fp, -(2 + 2 * (sizeof(outstr) - 1)), SEEK_CUR) != 0) - { - printf("%d: fseek() after write characters failed\n", __LINE__); - result = 1; - goto out; - } - else - { - - time_t t; - /* Make sure the timestamp actually can be different. */ - sleep(1); - t = time(NULL); - - if (fstat(fd, &st2) < 0) - { - printf("%d: fstat64() after fseeko() failed\n\n", __LINE__); - result = 1; - } - if (st1.st_ctime >= t) - { - printf("%d: st_ctime not updated\n", __LINE__); - result = 1; - } - if (st1.st_mtime >= t) - { - printf("%d: st_mtime not updated\n", __LINE__); - result = 1; - } - if (st1.st_ctime >= st2.st_ctime) - { - printf("%d: st_ctime not changed\n", __LINE__); - result = 1; - } - if (st1.st_mtime >= st2.st_mtime) - { - printf("%d: st_mtime not changed\n", __LINE__); - result = 1; - } - } - } - - if (fread(buf, 1, 2 + 2 * (sizeof(outstr) - 1), fp) != 2 + 2 - * (sizeof(outstr) - 1)) - { - printf("%d: reading 2 records plus bits failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0 || memcmp( - &buf[sizeof(outstr) - 1], outstr, sizeof(outstr) - 1) != 0 || buf[2 - * (sizeof(outstr) - 1)] != '1' || buf[2 * (sizeof(outstr) - 1) + 1] - != '2') - { - printf("%d: reading records failed\n", __LINE__); - result = 1; - } - else if (ungetc('9', fp) == EOF) - { - printf("%d: ungetc() failed\n", __LINE__); - result = 1; - } - else if (fseek(fp, -(2 + 2 * (sizeof(outstr) - 1)), SEEK_END) != 0) - { - printf("%d: fseek after ungetc failed\n", __LINE__); - result = 1; - } - else if (fread(buf, 1, 2 + 2 * (sizeof(outstr) - 1), fp) != 2 + 2 - * (sizeof(outstr) - 1)) - { - printf("%d: reading 2 records plus bits failed\n", __LINE__); - result = 1; - } - else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0 || memcmp( - &buf[sizeof(outstr) - 1], outstr, sizeof(outstr) - 1) != 0 || buf[2 - * (sizeof(outstr) - 1)] != '1') - { - printf("%d: reading records for the second time failed\n", __LINE__); - result = 1; - } - else if (buf[2 * (sizeof(outstr) - 1) + 1] == '9') - { - printf("%d: unget character not ignored\n", __LINE__); - result = 1; - } - else if (buf[2 * (sizeof(outstr) - 1) + 1] != '2') - { - printf("%d: unget somehow changed character\n", __LINE__); - result = 1; - } - - fclose(fp); - - fp = fopen(fname, "r"); - if (fp == NULL) - { - printf("%d: fopen() failed\n\n", __LINE__); - result = 1; - } - else if (fstat(fileno(fp), &st1) < 0) - { - printf("%d: fstat64() before fseeko() failed\n\n", __LINE__); - result = 1; - } - else if (fseeko(fp, 0, SEEK_END) != 0) - { - printf("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__); - result = 1; - } - else if (ftello(fp) != st1.st_size) - { - printf("%d: fstat64 st_size %zd ftello %zd\n", __LINE__, - (size_t) st1.st_size, (size_t) ftello(fp)); - result = 1; - } - else - printf("%d: SEEK_END works\n", __LINE__); - if (fp != NULL) - fclose(fp); - - fp = fopen(fname, "r"); - if (fp == NULL) - { - printf("%d: fopen() failed\n\n", __LINE__); - result = 1; - } - else if (fstat(fileno(fp), &st1) < 0) - { - printf("%d: fstat64() before fgetc() failed\n\n", __LINE__); - result = 1; - } - else if (fgetc(fp) == EOF) - { - printf("%d: fgetc() before fseeko() failed\n\n", __LINE__); - result = 1; - } - else if (fseeko(fp, 0, SEEK_END) != 0) - { - printf("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__); - result = 1; - } - else if (ftello(fp) != st1.st_size) - { - printf("%d: fstat64 st_size %zd ftello %zd\n", __LINE__, - (size_t) st1.st_size, (size_t) ftello(fp)); - result = 1; - } - else - printf("%d: SEEK_END works\n", __LINE__); - if (fp != NULL) - fclose(fp); - - out: unlink(fname); - - return result; + const char *tmpdir; + char *fname; + int fd; + FILE *fp; + const char outstr[] = "hello world!\n"; + char strbuf[sizeof outstr]; + char buf[200]; + struct stat st1; + struct stat st2; + int result = 0; + + tmpdir = getenv("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + asprintf(&fname, "%s/tst-fseek.XXXXXX", tmpdir); + if (fname == NULL) + { + fprintf(stderr, "cannot generate name for temporary file: %s\n", + strerror(errno)); + return 1; + } + + /* Create a temporary file. */ + fd = mkstemp(fname); + if (fd == -1) + { + fprintf(stderr, "cannot open temporary file: %s\n", strerror(errno)); + return 1; + } + + fp = fdopen(fd, "w+"); + if (fp == NULL) + { + fprintf(stderr, "cannot get FILE for temporary file: %s\n", strerror( + errno)); + return 1; + } + setbuffer(fp, strbuf, sizeof(outstr) - 1); + + if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: write error\n", __LINE__); + result = 1; + goto out; + } + + /* The EOF flag must be reset. */ + if (fgetc(fp) != EOF) + { + printf("%d: managed to read at end of file\n", __LINE__); + result = 1; + } + else if (!feof(fp)) + { + printf("%d: EOF flag not set\n", __LINE__); + result = 1; + } + if (fseek(fp, 0, SEEK_CUR) != 0) + { + printf("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__); + result = 1; + } + else if (feof(fp)) + { + printf("%d: fseek() didn't reset EOF flag\n", __LINE__); + result = 1; + } + + /* Do the same for fseeko(). */ + if (fgetc(fp) != EOF) + { + printf("%d: managed to read at end of file\n", __LINE__); + result = 1; + } + else if (!feof(fp)) + { + printf("%d: EOF flag not set\n", __LINE__); + result = 1; + } + if (fseeko(fp, 0, SEEK_CUR) != 0) + { + printf("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__); + result = 1; + } + else if (feof(fp)) + { + printf("%d: fseek() didn't reset EOF flag\n", __LINE__); + result = 1; + } + + /* Go back to the beginning of the file: absolute. */ + if (fseek(fp, 0, SEEK_SET) != 0) + { + printf("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush(fp) != 0) + { + printf("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek(fd, 0, SEEK_CUR) != 0) + { + int pos = lseek(fd, 0, SEEK_CUR); + printf("%d: lseek() returned different position, pos %d\n", __LINE__, + pos); + result = 1; + } + else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) + { + printf("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Now with fseeko. */ + if (fseeko(fp, 0, SEEK_SET) != 0) + { + printf("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush(fp) != 0) + { + printf("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek(fd, 0, SEEK_CUR) != 0) + { + printf("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) + { + printf("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Go back to the beginning of the file: relative. */ + if (fseek(fp, -((int) sizeof(outstr) - 1), SEEK_CUR) != 0) + { + printf("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush(fp) != 0) + { + printf("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek(fd, 0, SEEK_CUR) != 0) + { + printf("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) + { + printf("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Now with fseeko. */ + if (fseeko(fp, -((int) sizeof(outstr) - 1), SEEK_CUR) != 0) + { + printf("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush(fp) != 0) + { + printf("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek(fd, 0, SEEK_CUR) != 0) + { + printf("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) + { + printf("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Go back to the beginning of the file: from the end. */ + if (fseek(fp, -((int) sizeof(outstr) - 1), SEEK_END) != 0) + { + printf("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush(fp) != 0) + { + printf("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek(fd, 0, SEEK_CUR) != 0) + { + printf("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) + { + printf("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Now with fseeko. */ + if (fseeko(fp, -((int) sizeof(outstr) - 1), SEEK_END) != 0) + { + printf("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush(fp) != 0) + { + printf("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek(fd, 0, SEEK_CUR) != 0) + { + printf("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread(buf, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0) + { + printf("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: write error 2\n", __LINE__); + result = 1; + goto out; + } + + if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: write error 3\n", __LINE__); + result = 1; + goto out; + } + + if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: write error 4\n", __LINE__); + result = 1; + goto out; + } + + if (fwrite(outstr, sizeof(outstr) - 1, 1, fp) != 1) + { + printf("%d: write error 5\n", __LINE__); + result = 1; + goto out; + } + + if (fputc('1', fp) == EOF || fputc('2', fp) == EOF) + { + printf("%d: cannot add characters at the end\n", __LINE__); + result = 1; + goto out; + } + + /* Check the access time. */ + if (fstat(fd, &st1) < 0) + { + printf("%d: fstat64() before fseeko() failed\n\n", __LINE__); + result = 1; + } + else + { + sleep(1); + + if (fseek(fp, -(2 + 2 * (sizeof(outstr) - 1)), SEEK_CUR) != 0) + { + printf("%d: fseek() after write characters failed\n", __LINE__); + result = 1; + goto out; + } + else + { + + time_t t; + /* Make sure the timestamp actually can be different. */ + sleep(1); + t = time(NULL); + + if (fstat(fd, &st2) < 0) + { + printf("%d: fstat64() after fseeko() failed\n\n", __LINE__); + result = 1; + } + if (st1.st_ctime >= t) + { + printf("%d: st_ctime not updated\n", __LINE__); + result = 1; + } + if (st1.st_mtime >= t) + { + printf("%d: st_mtime not updated\n", __LINE__); + result = 1; + } + if (st1.st_ctime >= st2.st_ctime) + { + printf("%d: st_ctime not changed\n", __LINE__); + result = 1; + } + if (st1.st_mtime >= st2.st_mtime) + { + printf("%d: st_mtime not changed\n", __LINE__); + result = 1; + } + } + } + + if (fread(buf, 1, 2 + 2 * (sizeof(outstr) - 1), fp) != 2 + 2 + * (sizeof(outstr) - 1)) + { + printf("%d: reading 2 records plus bits failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0 || memcmp( + &buf[sizeof(outstr) - 1], outstr, sizeof(outstr) - 1) != 0 || buf[2 + * (sizeof(outstr) - 1)] != '1' || buf[2 * (sizeof(outstr) - 1) + 1] + != '2') + { + printf("%d: reading records failed\n", __LINE__); + result = 1; + } + else if (ungetc('9', fp) == EOF) + { + printf("%d: ungetc() failed\n", __LINE__); + result = 1; + } + else if (fseek(fp, -(2 + 2 * (sizeof(outstr) - 1)), SEEK_END) != 0) + { + printf("%d: fseek after ungetc failed\n", __LINE__); + result = 1; + } + else if (fread(buf, 1, 2 + 2 * (sizeof(outstr) - 1), fp) != 2 + 2 + * (sizeof(outstr) - 1)) + { + printf("%d: reading 2 records plus bits failed\n", __LINE__); + result = 1; + } + else if (memcmp(buf, outstr, sizeof(outstr) - 1) != 0 || memcmp( + &buf[sizeof(outstr) - 1], outstr, sizeof(outstr) - 1) != 0 || buf[2 + * (sizeof(outstr) - 1)] != '1') + { + printf("%d: reading records for the second time failed\n", __LINE__); + result = 1; + } + else if (buf[2 * (sizeof(outstr) - 1) + 1] == '9') + { + printf("%d: unget character not ignored\n", __LINE__); + result = 1; + } + else if (buf[2 * (sizeof(outstr) - 1) + 1] != '2') + { + printf("%d: unget somehow changed character\n", __LINE__); + result = 1; + } + + fclose(fp); + + fp = fopen(fname, "r"); + if (fp == NULL) + { + printf("%d: fopen() failed\n\n", __LINE__); + result = 1; + } + else if (fstat(fileno(fp), &st1) < 0) + { + printf("%d: fstat64() before fseeko() failed\n\n", __LINE__); + result = 1; + } + else if (fseeko(fp, 0, SEEK_END) != 0) + { + printf("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__); + result = 1; + } + else if (ftello(fp) != st1.st_size) + { + printf("%d: fstat64 st_size %zd ftello %zd\n", __LINE__, + (size_t) st1.st_size, (size_t) ftello(fp)); + result = 1; + } + else + printf("%d: SEEK_END works\n", __LINE__); + if (fp != NULL) + fclose(fp); + + fp = fopen(fname, "r"); + if (fp == NULL) + { + printf("%d: fopen() failed\n\n", __LINE__); + result = 1; + } + else if (fstat(fileno(fp), &st1) < 0) + { + printf("%d: fstat64() before fgetc() failed\n\n", __LINE__); + result = 1; + } + else if (fgetc(fp) == EOF) + { + printf("%d: fgetc() before fseeko() failed\n\n", __LINE__); + result = 1; + } + else if (fseeko(fp, 0, SEEK_END) != 0) + { + printf("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__); + result = 1; + } + else if (ftello(fp) != st1.st_size) + { + printf("%d: fstat64 st_size %zd ftello %zd\n", __LINE__, + (size_t) st1.st_size, (size_t) ftello(fp)); + result = 1; + } + else + printf("%d: SEEK_END works\n", __LINE__); + if (fp != NULL) + fclose(fp); + + out: unlink(fname); + + return result; } FINSH_FUNCTION_EXPORT(libc_fseek, lseek test for libc); diff --git a/examples/libc/memory.c b/examples/libc/memory.c index ee524fa43de08cea70179aeeb0c4a8fc964fa2a5..d4f8e8dbdee8707314b130427e54e868b95c4910 100644 --- a/examples/libc/memory.c +++ b/examples/libc/memory.c @@ -12,45 +12,45 @@ static int errors = 0; static void merror(const char *msg) { - ++errors; - printf("Error: %s\n", msg); + ++errors; + printf("Error: %s\n", msg); } int libc_mem(void) { - void *p; - int save; + void *p; + int save; - errno = 0; + errno = 0; - p = malloc(-1); - save = errno; + p = malloc(-1); + save = errno; - if (p != NULL) - merror("malloc (-1) succeeded."); + if (p != NULL) + merror("malloc (-1) succeeded."); - if (p == NULL && save != ENOMEM) - merror("errno is not set correctly"); + if (p == NULL && save != ENOMEM) + merror("errno is not set correctly"); - p = malloc(10); - if (p == NULL) - merror("malloc (10) failed."); + p = malloc(10); + if (p == NULL) + merror("malloc (10) failed."); - /* realloc (p, 0) == free (p). */ - p = realloc(p, 0); - if (p != NULL) - merror("realloc (p, 0) failed."); + /* realloc (p, 0) == free (p). */ + p = realloc(p, 0); + if (p != NULL) + merror("realloc (p, 0) failed."); - p = malloc(0); - if (p == NULL) - { - printf("malloc(0) returns NULL\n"); - } + p = malloc(0); + if (p == NULL) + { + printf("malloc(0) returns NULL\n"); + } - p = realloc(p, 0); - if (p != NULL) - merror("realloc (p, 0) failed."); + p = realloc(p, 0); + if (p != NULL) + merror("realloc (p, 0) failed."); - return errors != 0; + return errors != 0; } FINSH_FUNCTION_EXPORT(libc_mem, memory test for libc); diff --git a/examples/libc/mq.c b/examples/libc/mq.c index 3163e27975945b97353716099e109456726bf369..81ec6e35e8274539c766e99c38d638cb568d7b9b 100644 --- a/examples/libc/mq.c +++ b/examples/libc/mq.c @@ -7,113 +7,113 @@ #define MQ_NAME_1 "testmsg1" #define MQ_NAME_2 "testmsg2" -#define MSG_SIZE 128 -#define MAX_MSG 3 +#define MSG_SIZE 128 +#define MAX_MSG 3 const char *s_msg_ptr[] = {"msg test 1", "msg test 2", "msg test 3"}; char r_msg_ptr_1[MAX_MSG][MSG_SIZE]; char r_msg_ptr_2[MAX_MSG][MSG_SIZE]; pthread_t send1, send2, rev1, rev2; -int * send_1(void * mq) +int * send_1(void * mq) { - int i; - mqd_t mq1 = *(mqd_t *)mq; + int i; + mqd_t mq1 = *(mqd_t *)mq; - printf("Enter into send_1 \n"); - for (i = 0; i < MAX_MSG; i++ ) { - if ( -1 == mq_send(mq1, s_msg_ptr[i], MSG_SIZE, i)) { - perror("mq_send doesn't return success \n"); - pthread_exit((void *)1); - } - printf("[%d] send '%s' in thread send_1. \n", i+1, s_msg_ptr[i]); - } - pthread_exit((void *)0); + printf("Enter into send_1 \n"); + for (i = 0; i < MAX_MSG; i++ ) { + if ( -1 == mq_send(mq1, s_msg_ptr[i], MSG_SIZE, i)) { + perror("mq_send doesn't return success \n"); + pthread_exit((void *)1); + } + printf("[%d] send '%s' in thread send_1. \n", i+1, s_msg_ptr[i]); + } + pthread_exit((void *)0); } -int * send_2(void * mq) +int * send_2(void * mq) { - int i; - mqd_t mq2 = *(mqd_t *)mq; + int i; + mqd_t mq2 = *(mqd_t *)mq; - printf("Enter into send_2 \n"); - for (i = 0; i < MAX_MSG; i++ ) { - if ( -1 == mq_send(mq2, s_msg_ptr[i], MSG_SIZE, i)) { - perror("mq_send doesn't return success \n"); - pthread_exit((void *)1); - } - printf("[%d] send '%s' in thread send_2. \n", i+1, s_msg_ptr[i]); - } - pthread_exit((void *)0); + printf("Enter into send_2 \n"); + for (i = 0; i < MAX_MSG; i++ ) { + if ( -1 == mq_send(mq2, s_msg_ptr[i], MSG_SIZE, i)) { + perror("mq_send doesn't return success \n"); + pthread_exit((void *)1); + } + printf("[%d] send '%s' in thread send_2. \n", i+1, s_msg_ptr[i]); + } + pthread_exit((void *)0); } -int * receive_1(void * mq) +int * receive_1(void * mq) { - int i; - mqd_t mq1 = *(mqd_t *)mq; + int i; + mqd_t mq1 = *(mqd_t *)mq; - printf("Enter into receive_1 \n"); - for (i = 0; i< MAX_MSG; i++) { - if ( -1 == mq_receive(mq1, r_msg_ptr_1[i], MSG_SIZE, NULL) ) { - perror("mq_receive doesn't return success \n"); - pthread_exit((void *)1); - } - printf("[%d] receive '%s' in thread receive_1. \n", i+1, r_msg_ptr_1[i]); - } - pthread_exit((void *)0); + printf("Enter into receive_1 \n"); + for (i = 0; i< MAX_MSG; i++) { + if ( -1 == mq_receive(mq1, r_msg_ptr_1[i], MSG_SIZE, NULL) ) { + perror("mq_receive doesn't return success \n"); + pthread_exit((void *)1); + } + printf("[%d] receive '%s' in thread receive_1. \n", i+1, r_msg_ptr_1[i]); + } + pthread_exit((void *)0); } -int * receive_2(void * mq) +int * receive_2(void * mq) { - int i; - mqd_t mq2 = *(mqd_t *)mq; + int i; + mqd_t mq2 = *(mqd_t *)mq; - printf("Enter into receive_2 \n"); - for (i = 0; i< MAX_MSG; i++) { - if ( -1 == mq_receive(mq2, r_msg_ptr_2[i], MSG_SIZE, NULL) ) { - perror("mq_receive doesn't return success \n"); - pthread_exit((void *)1); - } - printf("[%d] receive '%s' in thread receive_2. \n", i+1, r_msg_ptr_2[i]); - } - pthread_exit((void *)0); + printf("Enter into receive_2 \n"); + for (i = 0; i< MAX_MSG; i++) { + if ( -1 == mq_receive(mq2, r_msg_ptr_2[i], MSG_SIZE, NULL) ) { + perror("mq_receive doesn't return success \n"); + pthread_exit((void *)1); + } + printf("[%d] receive '%s' in thread receive_2. \n", i+1, r_msg_ptr_2[i]); + } + pthread_exit((void *)0); } int libc_mq() { - mqd_t mq1 = 0, mq2 = 0; - struct mq_attr mqstat; - int oflag = O_CREAT|O_RDWR; + mqd_t mq1 = 0, mq2 = 0; + struct mq_attr mqstat; + int oflag = O_CREAT|O_RDWR; - memset(&mqstat, 0, sizeof(mqstat)); - mqstat.mq_maxmsg = MAX_MSG; - mqstat.mq_msgsize = MSG_SIZE; - mqstat.mq_flags = 0; - - if( ((mqd_t) -1) == (mq1 = mq_open(MQ_NAME_1,oflag,0777, &mqstat)) ) { - printf("mq_open doesn't return success \n"); - return -1; - } - if( ((mqd_t) -1) == (mq2 = mq_open(MQ_NAME_2,oflag,0777, &mqstat)) ) { - printf("mq_open doesn't return success \n"); - return -1; - } - pthread_create(&send1, NULL, (void *)send_1, (void *)&mq1); - pthread_create(&send2, NULL, (void *)send_2, (void *)&mq2); - pthread_create(&rev1, NULL, (void *)receive_1, (void *)&mq1); - pthread_create(&rev2, NULL, (void *)receive_2, (void *)&mq2); - pthread_join(send1, NULL); - pthread_join(send2, NULL); - pthread_join(rev1, NULL); - pthread_join(rev2, NULL); - - mq_close(mq1); - mq_close(mq2); - mq_unlink(MQ_NAME_1); - mq_unlink(MQ_NAME_2); + memset(&mqstat, 0, sizeof(mqstat)); + mqstat.mq_maxmsg = MAX_MSG; + mqstat.mq_msgsize = MSG_SIZE; + mqstat.mq_flags = 0; - printf("PASSED\n"); - return 0; + if( ((mqd_t) -1) == (mq1 = mq_open(MQ_NAME_1,oflag,0777, &mqstat)) ) { + printf("mq_open doesn't return success \n"); + return -1; + } + if( ((mqd_t) -1) == (mq2 = mq_open(MQ_NAME_2,oflag,0777, &mqstat)) ) { + printf("mq_open doesn't return success \n"); + return -1; + } + pthread_create(&send1, NULL, (void *)send_1, (void *)&mq1); + pthread_create(&send2, NULL, (void *)send_2, (void *)&mq2); + pthread_create(&rev1, NULL, (void *)receive_1, (void *)&mq1); + pthread_create(&rev2, NULL, (void *)receive_2, (void *)&mq2); + pthread_join(send1, NULL); + pthread_join(send2, NULL); + pthread_join(rev1, NULL); + pthread_join(rev2, NULL); + + mq_close(mq1); + mq_close(mq2); + mq_unlink(MQ_NAME_1); + mq_unlink(MQ_NAME_2); + + printf("PASSED\n"); + return 0; } #include FINSH_FUNCTION_EXPORT(libc_mq, posix mqueue test); diff --git a/examples/libc/printf.c b/examples/libc/printf.c index 2d2d8a7763adb6721391f3f5e5e0c1b350589fe0..85e33671d6d0ed78678eac82e581bb2ff85eb87e 100644 --- a/examples/libc/printf.c +++ b/examples/libc/printf.c @@ -142,59 +142,59 @@ int printf_test() int i; printf ("snprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n", - snprintf (buf, sizeof (buf), "%30s", "foo"), (int) sizeof (buf), - buf); + snprintf (buf, sizeof (buf), "%30s", "foo"), (int) sizeof (buf), + buf); memset(buf2,0,sizeof(buf)); i=snprintf(buf2, 256, "%.9999u", 10); printf("%i %i\n",i,strlen(buf2)); printf ("snprintf (\"%%.999999u\", 10) == %d\n", - snprintf(buf2, sizeof(buf2), "%.999999u", 10)); + snprintf(buf2, sizeof(buf2), "%.999999u", 10)); } return 0; } void libc_printf() { - printf("stdout test!!\n"); - fprintf(stdout, "fprintf test!!\n"); - fprintf(stderr, "fprintf test!!\n"); - puts("puts test!!\n"); + printf("stdout test!!\n"); + fprintf(stdout, "fprintf test!!\n"); + fprintf(stderr, "fprintf test!!\n"); + puts("puts test!!\n"); - putc('1', stderr); - putc('2', stderr); - putc('\n', stderr); + putc('1', stderr); + putc('2', stderr); + putc('\n', stderr); - printf_test(); + printf_test(); } FINSH_FUNCTION_EXPORT(libc_printf, printf test in libc); void libc_dprintf() { - int fd; - - fd = open("/dev/console", O_WRONLY, 0); - if (fd >0) - { - dprintf(fd, "fd:%d printf test!!\n", fd); - close(fd); - } + int fd; + + fd = open("/dev/console", O_WRONLY, 0); + if (fd >0) + { + dprintf(fd, "fd:%d printf test!!\n", fd); + close(fd); + } } FINSH_FUNCTION_EXPORT(libc_dprintf, dprintf test); void libc_fdopen() { - int fd; - FILE* fp; - - fd = open("/dev/console", O_WRONLY, 0); - if (fd >0) - { - fp = fdopen(fd, "w"); - fprintf(fp, "fdopen test, fd %d!!\n", fileno(fp)); - fclose(fp); - } + int fd; + FILE* fp; + + fd = open("/dev/console", O_WRONLY, 0); + if (fd >0) + { + fp = fdopen(fd, "w"); + fprintf(fp, "fdopen test, fd %d!!\n", fileno(fp)); + fclose(fp); + } } FINSH_FUNCTION_EXPORT(libc_fdopen, fdopen test); diff --git a/examples/libc/rand.c b/examples/libc/rand.c index 8f52ad28bb3e6523687335d37c368be554751987..240519703bd6163e42713032c7bc5f91acec87cb 100644 --- a/examples/libc/rand.c +++ b/examples/libc/rand.c @@ -10,34 +10,34 @@ int libc_rand(void) { - int i1, i2; - int j1, j2; + int i1, i2; + int j1, j2; - /* The C standard says that "If rand is called before any calls to - srand have been made, the same sequence shall be generated as - when srand is first called with a seed value of 1." */ - i1 = rand(); - i2 = rand(); - srand(1); - j1 = rand(); - j2 = rand(); - if (i1 < 0 || i2 < 0 || j1 < 0 || j2 < 0) - { - puts("Test FAILED!"); - } - if (j1 == i1 && j2 == i2) - { - puts("Test succeeded."); - return 0; - } - else - { - if (j1 != i1) - printf("%d != %d\n", j1, i1); - if (j2 != i2) - printf("%d != %d\n", j2, i2); - puts("Test FAILED!"); - return 1; - } + /* The C standard says that "If rand is called before any calls to + srand have been made, the same sequence shall be generated as + when srand is first called with a seed value of 1." */ + i1 = rand(); + i2 = rand(); + srand(1); + j1 = rand(); + j2 = rand(); + if (i1 < 0 || i2 < 0 || j1 < 0 || j2 < 0) + { + puts("Test FAILED!"); + } + if (j1 == i1 && j2 == i2) + { + puts("Test succeeded."); + return 0; + } + else + { + if (j1 != i1) + printf("%d != %d\n", j1, i1); + if (j2 != i2) + printf("%d != %d\n", j2, i2); + puts("Test FAILED!"); + return 1; + } } FINSH_FUNCTION_EXPORT(libc_rand, rand test for libc); diff --git a/examples/libc/sem.c b/examples/libc/sem.c index d081d246e93eee93c39ce1205239909dbc326589..438a76b7f12609b6e88f4e04874a1e25d8ac76e6 100644 --- a/examples/libc/sem.c +++ b/examples/libc/sem.c @@ -5,61 +5,61 @@ static sem_t sema; static void* other_thread() { - printf("other_thread here!\n"); + printf("other_thread here!\n"); - sleep(1); + sleep(1); - while (1) - { - printf("other_thread: sem_post...\n"); - if(sem_post(&sema) == -1) - printf("sem_post failed\n"); - sleep(1); - } - - printf("other_thread dies!\n"); - pthread_exit(0); + while (1) + { + printf("other_thread: sem_post...\n"); + if(sem_post(&sema) == -1) + printf("sem_post failed\n"); + sleep(1); + } + + printf("other_thread dies!\n"); + pthread_exit(0); } static void test_thread(void* parameter) { - pthread_t tid; + pthread_t tid; + + printf("main thread here!\n"); + printf("sleep 5 seconds..."); + sleep(5); + printf("done\n"); - printf("main thread here!\n"); - printf("sleep 5 seconds..."); - sleep(5); - printf("done\n"); + sem_init(&sema, 0, 0); - sem_init(&sema, 0, 0); - - /* create the "other" thread */ - if(pthread_create(&tid, 0, &other_thread, 0)!=0) - /* error */ - printf("pthread_create OtherThread failed.\n"); - else - printf("created OtherThread=%x\n", tid); + /* create the "other" thread */ + if(pthread_create(&tid, 0, &other_thread, 0)!=0) + /* error */ + printf("pthread_create OtherThread failed.\n"); + else + printf("created OtherThread=%x\n", tid); - /* let the other thread run */ - while (1) - { - printf("Main: sem_wait...\n"); - if(sem_wait(&sema) == -1) - printf("sem_wait failed\n"); - printf("Main back.\n\n"); - } + /* let the other thread run */ + while (1) + { + printf("Main: sem_wait...\n"); + if(sem_wait(&sema) == -1) + printf("sem_wait failed\n"); + printf("Main back.\n\n"); + } - pthread_exit(0); + pthread_exit(0); } #include void libc_sem() { - rt_thread_t tid; + rt_thread_t tid; - tid = rt_thread_create("semtest", test_thread, RT_NULL, - 2048, 20, 5); - if (tid != RT_NULL) - { - rt_thread_startup(tid); - } + tid = rt_thread_create("semtest", test_thread, RT_NULL, + 2048, 20, 5); + if (tid != RT_NULL) + { + rt_thread_startup(tid); + } } FINSH_FUNCTION_EXPORT(libc_sem, posix semaphore test); diff --git a/examples/libc/time.c b/examples/libc/time.c index fa6dee74c8b892db113cd581e618b668cac4685c..d9a6cb5b8ec1e532181e9b3e2969c34232803ab9 100644 --- a/examples/libc/time.c +++ b/examples/libc/time.c @@ -11,14 +11,14 @@ int speed() { - int i; - time_t t; + int i; + time_t t; - printf("%d\n", time(0)); - for (i = 0; i < 10000000; ++i) - t = time(0); + printf("%d\n", time(0)); + for (i = 0; i < 10000000; ++i) + t = time(0); - printf("%d\n", time(0)); - return 0; + printf("%d\n", time(0)); + return 0; } FINSH_FUNCTION_EXPORT(speed, speed test); diff --git a/examples/network/tcpsendpacket.c b/examples/network/tcpsendpacket.c index 47bb5625068be8cece27f7b8f57bac3e2f6c25b7..438423206f1b72caffb8f898686b6c754ce6f9b6 100644 --- a/examples/network/tcpsendpacket.c +++ b/examples/network/tcpsendpacket.c @@ -26,9 +26,9 @@ void tcp_senddata(const char *url, int port, int length) { /* 鐢宠鍐呭瓨澶辫触 */ rt_kprintf("No memory\n"); - return; + return; } - + /* 鏋勯犲彂閫佹暟鎹 */ for (index = 0; index < length; index ++) buffer_ptr[index] = index & 0xff; diff --git a/examples/pm/timer_app.c b/examples/pm/timer_app.c index b7ff675b394a77ac4365e97726c8838a04f1c852..579769314903ea28581d4ed49fbd21f77566146e 100644 --- a/examples/pm/timer_app.c +++ b/examples/pm/timer_app.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/examples/pm/wakeup_app.c b/examples/pm/wakeup_app.c index 0d4c42a9973aa021a855c54ada7b264c86d6dce7..d287bf74ec94a1f357fb19f4fa662f1c9639cc11 100644 --- a/examples/pm/wakeup_app.c +++ b/examples/pm/wakeup_app.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/examples/test/dhry.h b/examples/test/dhry.h index 8f472338023eff50518d31bc66bc34c783ee27e6..dc42492417d9def0ad373fccc657811cc5343acc 100644 --- a/examples/test/dhry.h +++ b/examples/test/dhry.h @@ -3,9 +3,9 @@ * * "DHRYSTONE" Benchmark Program * ----------------------------- - * + * * Version: C, Version 2.1 - * + * * File: dhry.h (part 1 of 3) * * Date: May 25, 1988 @@ -33,12 +33,12 @@ * * Collection of Results: * Reinhold Weicker (address see above) and - * + * * Rick Richardson * PC Research. Inc. * 94 Apple Orchard Drive * Tinton Falls, NJ 07724 - * Phone: (201) 389-8963 (9-17 EST) + * Phone: (201) 389-8963 (9-17 EST) * Usenet: ...!uunet!pcrat!rick * * Please send results to Rick Richardson and/or Reinhold Weicker. @@ -91,7 +91,7 @@ * version previously distributed by Reinhold Weicker. * * At several places in the benchmark, code has been added, - * but within the measurement loop only in branches that + * but within the measurement loop only in branches that * are not executed. The intention is that optimizing compilers * should be prevented from moving code out of the measurement * loop, or from removing code altogether. Since the statements @@ -101,7 +101,7 @@ * still hold. Except for sophisticated optimizing compilers, * execution times for this version should be the same as * for previous versions. - * + * * Since it has proven difficult to subtract the time for the * measurement loop overhead in a correct way, the loop check * has been made a part of the benchmark. This does have @@ -151,7 +151,7 @@ * -DTIME * The "times" function of UNIX (returning process times) * or the "time" function (returning wallclock time) - * is used for measurement. + * is used for measurement. * For single user machines, "time ()" is adequate. For * multi-user machines where you cannot get single-user * access, use the "times ()" function. If you have @@ -198,23 +198,23 @@ * different from the Ada version.] * * The following program contains statements of a high level programming - * language (here: C) in a distribution considered representative: + * language (here: C) in a distribution considered representative: * * assignments 52 (51.0 %) * control statements 33 (32.4 %) * procedure, function calls 17 (16.7 %) * * 103 statements are dynamically executed. The program is balanced with - * respect to the three aspects: + * respect to the three aspects: * * - statement type * - operand type * - operand locality - * operand global, local, parameter, or constant. + * operand global, local, parameter, or constant. * - * The combination of these three aspects is balanced only approximately. + * The combination of these three aspects is balanced only approximately. * - * 1. Statement Type: + * 1. Statement Type: * ----------------- number * * V1 = V2 9 @@ -258,9 +258,9 @@ * library procedure 1 * X = F (...) * function call 6 - * user function 5 - * library function 1 - * -- + * user function 5 + * library function 1 + * -- * 17 17 * --- * 103 @@ -274,10 +274,10 @@ * number approximate * percentage * - * Arithmetic 32 50.8 + * Arithmetic 32 50.8 * - * + 21 33.3 - * - 7 11.1 + * + 21 33.3 + * - 7 11.1 * * 3 4.8 * / (int div) 1 1.6 * @@ -295,7 +295,7 @@ * && (AND-THEN) 1 1.6 * | (OR) 1 1.6 * ! (NOT) 2 3.2 - * + * * -- ----- * 63 100.1 * @@ -315,10 +315,10 @@ * 242 100.0 % * * When there is an access path leading to the final operand (e.g. a record - * component), only the final data type on the access path is counted. + * component), only the final data type on the access path is counted. * * - * 4. Operand Locality: + * 4. Operand Locality: * ------------------- * number approximate * percentage @@ -375,7 +375,7 @@ /* for strcpy, strcmp */ #include -#define Null 0 +#define Null 0 /* Value of a Null pointer */ #define true 1 #define false 0 @@ -388,7 +388,7 @@ typedef char Str_30 [31]; typedef int Arr_1_Dim [50]; typedef int Arr_2_Dim [50] [50]; -typedef struct record +typedef struct record { struct record *Ptr_Comp; Enumeration Discr; diff --git a/examples/test/dhry_1.c b/examples/test/dhry_1.c index b45b9ddafa7f67f70b4dea8fad71c9c0f91679ad..44283649f69cbc9ad2455b5607ad45a5d546e2a4 100644 --- a/examples/test/dhry_1.c +++ b/examples/test/dhry_1.c @@ -3,9 +3,9 @@ * * "DHRYSTONE" Benchmark Program * ----------------------------- - * + * * Version: C, Version 2.1 - * + * * File: dhry_1.c (part 2 of 3) * * Date: May 25, 1988 @@ -14,8 +14,8 @@ * **************************************************************************** */ - -#define NUMBER_OF_RUNS 1000000 + +#define NUMBER_OF_RUNS 1000000 #include "dhry.h" #define printf rt_kprintf @@ -34,7 +34,7 @@ int Arr_2_Glob [50] [50]; Enumeration Func_1 (); /* forward declaration necessary since Enumeration may not simply be int */ - + #ifndef REG Boolean Reg = false; #define REG @@ -71,7 +71,7 @@ void dhry_test(void) REG int Number_Of_Runs; /* Initializations */ - + Next_Ptr_Glob = (Rec_Pointer) rt_malloc (sizeof (Rec_Type)); Ptr_Glob = (Rec_Pointer) rt_malloc (sizeof (Rec_Type)); @@ -79,7 +79,7 @@ void dhry_test(void) Ptr_Glob->Discr = Ident_1; Ptr_Glob->variant.var_1.Enum_Comp = Ident_3; Ptr_Glob->variant.var_1.Int_Comp = 40; - rt_strncpy (Ptr_Glob->variant.var_1.Str_Comp, + rt_strncpy (Ptr_Glob->variant.var_1.Str_Comp, "DHRYSTONE PROGRAM, SOME STRING", sizeof(Ptr_Glob->variant.var_1.Str_Comp)); rt_strncpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING", sizeof(Str_1_Loc)); @@ -114,9 +114,9 @@ void dhry_test(void) /***************/ /* Start timer */ /***************/ - + // Add your timer initializing code here - + Begin_Time = rt_tick_get(); /* get start tick */ for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index) @@ -169,8 +169,8 @@ void dhry_test(void) /* Stop timer */ /**************/ - End_Time = rt_tick_get(); // Get end tick - + End_Time = rt_tick_get(); // Get end tick + printf ("Execution ends\n"); printf ("\n"); printf ("Final values of the variables used in the benchmark:\n"); @@ -226,7 +226,7 @@ void dhry_test(void) User_Time = (End_Time - Begin_Time) / RT_TICK_PER_SECOND; - Microseconds = (float) User_Time * Mic_secs_Per_Second + Microseconds = (float) User_Time * Mic_secs_Per_Second / (float) Number_Of_Runs; Dhrystones_Per_Second = (float) Number_Of_Runs / (float) User_Time; @@ -237,7 +237,7 @@ void dhry_test(void) printf ("Dhrystones MIPS: "); printf ("%6d \n", (int)(Dhrystones_Per_Second / 1757.0)); printf ("\n"); - + } Proc_1 (Ptr_Val_Par) @@ -246,27 +246,27 @@ Proc_1 (Ptr_Val_Par) REG Rec_Pointer Ptr_Val_Par; /* executed once */ { - REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; + REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; /* == Ptr_Glob_Next */ /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */ /* corresponds to "rename" in Ada, "with" in Pascal */ - - structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); + + structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); Ptr_Val_Par->variant.var_1.Int_Comp = 5; - Next_Record->variant.var_1.Int_Comp + Next_Record->variant.var_1.Int_Comp = Ptr_Val_Par->variant.var_1.Int_Comp; Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp; Proc_3 (&Next_Record->Ptr_Comp); - /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp + /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp == Ptr_Glob->Ptr_Comp */ if (Next_Record->Discr == Ident_1) /* then, executed */ { Next_Record->variant.var_1.Int_Comp = 6; - Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, + Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, &Next_Record->variant.var_1.Enum_Comp); Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp; - Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, + Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, &Next_Record->variant.var_1.Int_Comp); } else /* not executed */ @@ -281,7 +281,7 @@ Proc_2 (Int_Par_Ref) One_Fifty *Int_Par_Ref; { - One_Fifty Int_Loc; + One_Fifty Int_Loc; Enumeration Enum_Loc; Int_Loc = *Int_Par_Ref + 10; diff --git a/examples/test/dhry_2.c b/examples/test/dhry_2.c index 63a3d3ea03378b7b68a5acf784085548e11859d9..ac5be3baf4e7fa80993f5a4601346def4094cf2c 100644 --- a/examples/test/dhry_2.c +++ b/examples/test/dhry_2.c @@ -3,9 +3,9 @@ * * "DHRYSTONE" Benchmark Program * ----------------------------- - * + * * Version: C, Version 2.1 - * + * * File: dhry_2.c (part 3 of 3) * * Date: May 25, 1988 @@ -41,10 +41,10 @@ Enumeration *Enum_Ref_Par; *Enum_Ref_Par = Ident_4; switch (Enum_Val_Par) { - case Ident_1: + case Ident_1: *Enum_Ref_Par = Ident_1; break; - case Ident_2: + case Ident_2: if (Int_Glob > 100) /* then */ *Enum_Ref_Par = Ident_1; @@ -54,7 +54,7 @@ Enumeration *Enum_Ref_Par; *Enum_Ref_Par = Ident_2; break; case Ident_4: break; - case Ident_5: + case Ident_5: *Enum_Ref_Par = Ident_3; break; } /* switch */ @@ -63,7 +63,7 @@ Enumeration *Enum_Ref_Par; Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) /**********************************************/ - /* executed three times */ + /* executed three times */ /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */ /* Int_Par_Ref becomes 7 */ /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */ diff --git a/examples/test/hwtimer_test.c b/examples/test/hwtimer_test.c index 428373dde056b0faa884e18676bea9d4214d036b..b488c305b2be71860cbe8e61d751e2f24bcfc63b 100644 --- a/examples/test/hwtimer_test.c +++ b/examples/test/hwtimer_test.c @@ -35,8 +35,8 @@ int hwtimer(void) return -1; } - /* 时间测量 */ - /* 计数时钟设置(默认1Mhz或支持的最小计数频率) */ + /* 鏃堕棿娴嬮噺 */ + /* 璁℃暟鏃堕挓璁剧疆(榛樿1Mhz鎴栨敮鎸佺殑鏈灏忚鏁伴鐜) */ err = rt_device_control(dev, HWTIMER_CTRL_FREQ_SET, &freq); if (err != RT_EOK) { @@ -44,13 +44,13 @@ int hwtimer(void) goto EXIT; } - /* 周期模式 */ + /* 鍛ㄦ湡妯″紡 */ mode = HWTIMER_MODE_PERIOD; err = rt_device_control(dev, HWTIMER_CTRL_MODE_SET, &mode); tick = rt_tick_get(); rt_kprintf("Start Timer> Tick: %d\n", tick); - /* 设置定时器超时值并启动定时器 */ + /* 璁剧疆瀹氭椂鍣ㄨ秴鏃跺煎苟鍚姩瀹氭椂鍣 */ val.sec = t; val.usec = 0; rt_kprintf("SetTime: Sec %d, Usec %d\n", val.sec, val.usec); @@ -62,22 +62,22 @@ int hwtimer(void) rt_kprintf("Sleep %d sec\n", t); rt_thread_delay(t*RT_TICK_PER_SECOND); - /* 停止定时器 */ + /* 鍋滄瀹氭椂鍣 */ err = rt_device_control(dev, HWTIMER_CTRL_STOP, RT_NULL); rt_kprintf("Timer Stoped\n"); - /* 读取计数 */ + /* 璇诲彇璁℃暟 */ rt_device_read(dev, 0, &val, sizeof(val)); rt_kprintf("Read: Sec = %d, Usec = %d\n", val.sec, val.usec); - /* 定时执行回调函数 -- 单次模式 */ - /* 设置超时回调函数 */ + /* 瀹氭椂鎵ц鍥炶皟鍑芥暟 -- 鍗曟妯″紡 */ + /* 璁剧疆瓒呮椂鍥炶皟鍑芥暟 */ rt_device_set_rx_indicate(dev, timer_timeout_cb); - /* 单次模式 */ + /* 鍗曟妯″紡 */ mode = HWTIMER_MODE_PERIOD; err = rt_device_control(dev, HWTIMER_CTRL_MODE_SET, &mode); - /* 设置定时器超时值并启动定时器 */ + /* 璁剧疆瀹氭椂鍣ㄨ秴鏃跺煎苟鍚姩瀹氭椂鍣 */ val.sec = t; val.usec = 0; rt_kprintf("SetTime: Sec %d, Usec %d\n", val.sec, val.usec); @@ -87,7 +87,7 @@ int hwtimer(void) goto EXIT; } - /* 等待回调函数执行 */ + /* 绛夊緟鍥炶皟鍑芥暟鎵ц */ rt_thread_delay((t + 1)*RT_TICK_PER_SECOND); EXIT: diff --git a/examples/test/net_test.c b/examples/test/net_test.c index ec5d50197de5dcf752bcb75298b5a6e7fbc649f2..de143147d1bea76d6219ec1a926b054853561137 100644 --- a/examples/test/net_test.c +++ b/examples/test/net_test.c @@ -7,7 +7,7 @@ #include #include -/* +/* * UDP echo server */ #define UDP_ECHO_PORT 7 @@ -30,12 +30,12 @@ void udpecho_entry(void *parameter) while(1) { /* received data to buffer */ -#if LWIP_VERSION_MINOR==3U +#if LWIP_VERSION_MINOR==3U buf = netconn_recv(conn); #else netconn_recv(conn, &buf); #endif - if(buf == NULL) + if(buf == NULL) { break; } @@ -46,25 +46,25 @@ void udpecho_entry(void *parameter) netconn_connect(conn, addr, port); /* reset address, and send to client */ -#if LWIP_VERSION_MINOR==3U +#if LWIP_VERSION_MINOR==3U buf->addr = RT_NULL; #else buf->addr = *IP_ADDR_ANY; #endif - + netconn_send(conn, buf); - + /* release buffer */ netbuf_delete(buf); } - + netconn_delete(conn); } /* * UDP socket echo server */ -#define UDP_SOCKET_ECHO_PORT 700 -#define UDP_SOCKET_BUFFER_SIZE 4096 +#define UDP_SOCKET_ECHO_PORT 700 +#define UDP_SOCKET_BUFFER_SIZE 4096 rt_thread_t udpecho_socket_tid = RT_NULL; void udpecho_socket_entry(void *parameter) { @@ -110,7 +110,7 @@ void udpecho_socket_entry(void *parameter) /* try to receive from UDP socket */ bytes_read = recvfrom(sock, recv_data, UDP_SOCKET_BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &addr_len); - + /* send back */ sendto(sock, recv_data, bytes_read, 0, (struct sockaddr *)&client_addr, addr_len); @@ -148,7 +148,7 @@ void tcpecho_entry(void *parameter) while(1) { /* Grab new connection. */ -#if LWIP_VERSION_MINOR==3U +#if LWIP_VERSION_MINOR==3U newconn = netconn_accept(conn); if(newconn != NULL) #else @@ -172,25 +172,25 @@ void tcpecho_entry(void *parameter) err = netconn_write(newconn, data, len, NETCONN_COPY); if(err != ERR_OK) { - break; + break; } }while(netbuf_next(buf) >= 0); - + netbuf_delete(buf); } /* Close connection and discard connection identifier. */ netconn_delete(newconn); } } - + netconn_delete(conn); } /* * TCP socket echo server */ -#define TCP_SOCKET_ECHO_PORT 700 -#define TCP_SOCKET_BUFFER_SIZE 4096 +#define TCP_SOCKET_ECHO_PORT 700 +#define TCP_SOCKET_BUFFER_SIZE 4096 rt_thread_t tcpecho_socket_tid = RT_NULL; void tcpecho_socket_entry(void *parameter) { @@ -241,7 +241,7 @@ void tcpecho_socket_entry(void *parameter) if (connected > 0) { int timeout; - + /* set timeout option */ timeout = 5000; /* 5second */ setsockopt(connected, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); @@ -285,8 +285,8 @@ void net_test(void) { udpecho_tid = rt_thread_create("uecho", udpecho_entry, - RT_NULL, - 512, + RT_NULL, + 512, RT_THREAD_PRIORITY_MAX/2, 5); if (udpecho_tid != RT_NULL) { @@ -299,7 +299,7 @@ void net_test(void) udpecho_socket_tid = rt_thread_create("uecho_s", udpecho_socket_entry, RT_NULL, - 512, + 512, RT_THREAD_PRIORITY_MAX/2 + 1, 5); if (udpecho_socket_tid != RT_NULL) { @@ -310,22 +310,22 @@ void net_test(void) if (tcpecho_tid == RT_NULL) { tcpecho_tid = rt_thread_create("techo", - tcpecho_entry, + tcpecho_entry, RT_NULL, - 512, + 512, RT_THREAD_PRIORITY_MAX/2 + 2, 5); if (tcpecho_tid != RT_NULL) { rt_thread_startup(tcpecho_tid); } } - + if (tcpecho_socket_tid == RT_NULL) { tcpecho_socket_tid = rt_thread_create("techo_s", - tcpecho_socket_entry, + tcpecho_socket_entry, RT_NULL, - 512, + 512, RT_THREAD_PRIORITY_MAX/2 + 3, 5); if (tcpecho_socket_tid != RT_NULL) { diff --git a/examples/test/rtc_test.c b/examples/test/rtc_test.c index 992eb08d3dd09932daad8a030add5e1377fe1369..48129ca36ca31ecc1da643998b2e70e69b63dc72 100644 --- a/examples/test/rtc_test.c +++ b/examples/test/rtc_test.c @@ -21,48 +21,48 @@ * Date Author Notes * 2018-01-15 Liu2guang the first version. */ -#include -#include +#include +#include int rtc_test(void) -{ +{ uint8_t i; time_t now; - rt_err_t ret = RT_EOK; - + rt_err_t ret = RT_EOK; + rt_kprintf("[RTC Test]RTC Test Start...\n"); rt_thread_delay(RT_TICK_PER_SECOND); - rt_kprintf("[RTC Test]Set RTC 2017-04-01 12:30:46\n\n"); + rt_kprintf("[RTC Test]Set RTC 2017-04-01 12:30:46\n\n"); rt_thread_delay(RT_TICK_PER_SECOND); - - ret = set_date(2017, 4, 1); + + ret = set_date(2017, 4, 1); if(ret != RT_EOK) { - rt_kprintf("[RTC Test]Set RTC Date failed\n"); + rt_kprintf("[RTC Test]Set RTC Date failed\n"); return RT_ERROR; } - + rt_thread_delay(RT_TICK_PER_SECOND); - - ret = set_time(12, 30, 46); + + ret = set_time(12, 30, 46); if(ret != RT_EOK) { - rt_kprintf("[RTC Test]Set RTC Time failed\n"); + rt_kprintf("[RTC Test]Set RTC Time failed\n"); return RT_ERROR; } - + rt_thread_delay(RT_TICK_PER_SECOND); - + for(i = 0; i < 10; i++) { - rt_kprintf("[RTC Test]Read RTC Date and Time: "); + rt_kprintf("[RTC Test]Read RTC Date and Time: "); now = time(RT_NULL); rt_kprintf("%s", ctime(&now)); - + rt_thread_delay(RT_TICK_PER_SECOND); } - + rt_kprintf("\n"); return RT_EOK; @@ -70,5 +70,5 @@ int rtc_test(void) #ifdef RT_USING_FINSH #include FINSH_FUNCTION_EXPORT(rtc_test, rtc drive test. e.g: rtc_test()); -MSH_CMD_EXPORT(rtc_test, rtc drive test. e.g: rtc_test()); +MSH_CMD_EXPORT(rtc_test, rtc drive test. e.g: rtc_test()); #endif diff --git a/examples/ulog/ulog_example.c b/examples/ulog/ulog_example.c index 88572f5152aa91eee9ee28e07a1b2511a8fea47b..f7ee068799ea6b37d48fc8bd8bb63409c85d3f9e 100644 --- a/examples/ulog/ulog_example.c +++ b/examples/ulog/ulog_example.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 *