ZHCUAQ1F july 2015 – april 2023
为 I/O 打开文件
int DEV_open (const char *path , unsigned flags , intllv_fd );
此函数查找匹配 path 的文件并在 flags 请求时为 I/O 打开它。
O_RDONLY (0x0000) /* 打开以进行读取 */
O_WRONLY (0x0001) /* 打开以进行写入 */
O_RDWR (0x0002) /* 打开以进行读写 */
O_APPEND (0x0008) /* 在每次写入时添加 */
O_CREAT (0x0200) /* 打开并创建文件 */
O_TRUNC (0x0400) /* 打开并截断 */
O_BINARY (0x8000) /* 以二进制模式打开 */
如需各个标志的进一步说明,请参阅 POSIX。
此函数必须安排要为每个文件描述符保存的信息,通常包括文件位置指示符以及任何重要标志。对于主机版本,所有记账工作都由在主机上运行的调试器负责处理。如果器件使用内部缓冲器,则可以在打开文件时创建缓冲器,或者在读取或写入期间创建缓冲器。
如果出于某些原因而无法打开文件,此函数必须返回 -1 以表示出错;例如,文件不存在、无法创建,或者打开了太多文件。可以选择设置 errno 的值来指示确切的错误(主机器件不会设置 errno)。一些器件可能具有特殊的故障条件;例如,如果器件为只读,则无法使用 O_WRONLY 来打开文件。
成功时,此函数必须返回一个非负的文件描述符,并且这个文件描述符必须在所有打开且由特定器件处理的文件中保持唯一。文件描述符不需要在不同器件上保持唯一。器件文件描述符仅由低级函数在调用器件驱动程序级函数时使用。低级函数 open
会为高级函数分配其自有的独特文件描述符,以便调用各个低级函数。仅使用高级 I/O 函数的代码不需要知道这些文件描述符。