65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /*
 | ||
|  |  * File      : readspeed.c | ||
|  |  * This file is part of RT-TestCase in RT-Thread RTOS | ||
|  |  * COPYRIGHT (C) 2010, RT-Thread Development Team | ||
|  |  * | ||
|  |  * The license and distribution terms for this file may be | ||
|  |  * found in the file LICENSE in this distribution or at | ||
|  |  * http://www.rt-thread.org/license/LICENSE
 | ||
|  |  * | ||
|  |  * Change Logs: | ||
|  |  * Date           Author       Notes | ||
|  |  * 2010-02-10     Bernard      first version | ||
|  |  */ | ||
|  | 
 | ||
|  | #include <rtthread.h>
 | ||
|  | #include <dfs_posix.h>
 | ||
|  | 
 | ||
|  | void readspeed(const char* filename, int block_size) | ||
|  | { | ||
|  |     int fd; | ||
|  |     char *buff_ptr; | ||
|  |     rt_size_t total_length; | ||
|  |     rt_tick_t tick; | ||
|  | 
 | ||
|  |     fd = open(filename, 0, O_RDONLY); | ||
|  |     if (fd < 0) | ||
|  |     { | ||
|  |         rt_kprintf("open file:%s failed\n", filename); | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  |     buff_ptr = rt_malloc(block_size); | ||
|  |     if (buff_ptr == RT_NULL) | ||
|  |     { | ||
|  |         rt_kprintf("no memory\n"); | ||
|  |         close(fd); | ||
|  | 
 | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  |     tick = rt_tick_get(); | ||
|  |     total_length = 0; | ||
|  |     while (1) | ||
|  |     { | ||
|  |         int length; | ||
|  |         length = read(fd, buff_ptr, block_size); | ||
|  | 
 | ||
|  |         if (length <= 0) break; | ||
|  |         total_length += length; | ||
|  |     } | ||
|  |     tick = rt_tick_get() - tick; | ||
|  | 
 | ||
|  | 	/* close file and release memory */ | ||
|  |     close(fd); | ||
|  | 	rt_free(buff_ptr); | ||
|  | 
 | ||
|  |     /* calculate read speed */ | ||
|  |     rt_kprintf("File read speed: %d byte/s\n", total_length /tick * RT_TICK_PER_SECOND); | ||
|  | } | ||
|  | 
 | ||
|  | #ifdef RT_USING_FINSH
 | ||
|  | #include <finsh.h>
 | ||
|  | FINSH_FUNCTION_EXPORT(readspeed, perform file read test); | ||
|  | #endif
 |