POSIX API
6-3-4 DIAGNOSING A FILE ERROR
The file maintains flags that reflect errors encountered in the previous file access, and
subsequent accesses will fail (under certain conditions outlined here) unless these flags are
explicitly cleared (using fs_clearerr() ). There are actually two sets of flags. One reflects
whether the file encountered the end-of-file (EOF) during the previous access, and if this is
set, writes will not fail, but reads will fail. The other reflects device errors, and no
subsequent file access will succeed (except file close) unless this is first cleared. The
functions fs_ferror() and fs_feof() can be used to get the state of device error and
EOF conditions, respectively.
6-3-5 ATOMIC FILE OPERATIONS USING FILE LOCK
If a file is shared between several tasks in an application, the file lock can be employed to
guarantee that a series of file operations are executed atomically. fs_flockfile() (or its
non-blocking equivalent fs_ftrylockfile() ) acquires the lock for a task (if it does not
already own it). Accesses from other tasks will be blocked until fs_funlockfile() is called.
Each file actually has a lock count associated with it. This allows nested calls by a task to
acquire a file lock; each of those calls must be matched with a call to fs_funlockfile( ).
void App_Fnct (void)
{
unsigned char data1[50];
unsigned char data2[10];
.
.
.
if (App_FilePtr != (FS_FILE *)0) {
fs_flockfile(App_FilePtr);
/* Lock file.
/* See Note #1.
/* Wr data atomically.
*/
*/
*/
fs_fwrite(data1, 1, sizeof(data1), App_FilePtr);
fs_fwrite(data2, 1, sizeof(data1), App_FilePtr);
fs_funlockfile(App_FilePtr); /* Unlock file.
*/
}
.
.
.
}
Listing 6-4 Example file lock usage.
93
相关PDF资料
AD-UCOS3-SPRD PRD LIC UCOS3 RTOS CORE CCES SGL
AD-UCUSBD-SPRD PRD LIC UCUSB DEV CORE CCES SGL
AD637-EVALZ BOARD EVALUATION FOR AD637
AD736-EVALZ BOARD EVALUATION FOR AD736
AD737-EVALZ BOARD EVALUATION FOR AD737
AD8007AKS-EBZ BOARD EVAL FOR AD8007AKS
AD8018ARU-EVAL BOARD EVAL FOR AD8018
AD8034ART-EBZ BOARD EVAL FOR AD8034ART
相关代理商/技术参数
ADuC-H7020 功能描述:开发板和工具包 - ARM HDR BRD FOR ADUC7020 ARM7 RoHS:否 制造商:Arduino 产品:Development Boards 工具用于评估:ATSAM3X8EA-AU 核心:ARM Cortex M3 接口类型:DAC, ICSP, JTAG, UART, USB 工作电源电压:3.3 V
ADuC-IO7020 功能描述:开发板和工具包 - ARM DEV BRD FOR ADUC7020 ARM7 RoHS:否 制造商:Arduino 产品:Development Boards 工具用于评估:ATSAM3X8EA-AU 核心:ARM Cortex M3 接口类型:DAC, ICSP, JTAG, UART, USB 工作电源电压:3.3 V
ADUCM3027BCBZ-R7 功能描述:LOWPWR CORTEXM3W/128KKEMBEDDED F 制造商:analog devices inc. 系列:* 零件状态:在售 标准包装:1,500
ADUCM3027BCBZ-RL 功能描述:LOWPWR CORTEXM3W/128KKEMBEDDED F 制造商:analog devices inc. 系列:* 零件状态:在售 标准包装:5,000
ADUCM3027BCPZ 功能描述:IC MCU 32BIT 128KB FLASH 64LFCSP 制造商:analog devices inc. 系列:ADuCM 包装:托盘 零件状态:在售 核心处理器:ARM? Cortex?-M3 核心尺寸:32-位 速度:26MHz 连接性:I2C,SPI,UART/USART 外设:DMA,POR,PWM,WDT I/O 数:44 程序存储容量:128KB(128K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:96K x 8 电压 - 电源(Vcc/Vdd):1.74 V ~ 3.6 V 数据转换器:A/D 8x12b 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:64-WFQFN 裸露焊盘 供应商器件封装:64-LFCSP(9x9) 标准包装:1
ADUCM3027BCPZ-R7 功能描述:IC MCU 32BIT 128KB FLASH 64LFCSP 制造商:analog devices inc. 系列:ADuCM 包装:剪切带(CT) 零件状态:在售 核心处理器:ARM? Cortex?-M3 核心尺寸:32-位 速度:26MHz 连接性:I2C,SPI,UART/USART 外设:DMA,POR,PWM,WDT I/O 数:44 程序存储容量:128KB(128K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:96K x 8 电压 - 电源(Vcc/Vdd):1.74 V ~ 3.6 V 数据转换器:A/D 8x12b 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:64-WFQFN 裸露焊盘 供应商器件封装:64-LFCSP(9x9) 标准包装:1
ADUCM3027BCPZ-RL 功能描述:IC MCU 32BIT 128KB FLASH 64LFCSP 制造商:analog devices inc. 系列:ADuCM 包装:带卷(TR) 零件状态:在售 核心处理器:ARM? Cortex?-M3 核心尺寸:32-位 速度:26MHz 连接性:I2C,SPI,UART/USART 外设:DMA,POR,PWM,WDT I/O 数:44 程序存储容量:128KB(128K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:96K x 8 电压 - 电源(Vcc/Vdd):1.74 V ~ 3.6 V 数据转换器:A/D 8x12b 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:64-WFQFN 裸露焊盘 供应商器件封装:64-LFCSP(9x9) 标准包装:2,500
ADUCM3029BCBZ-R7 功能描述:LOWPWR CORTEX M3W/256KEMBEDDED F 制造商:analog devices inc. 系列:* 零件状态:在售 标准包装:1,500