Lines Matching +full:4 +full:- +full:byte

2  * Copyright (c) 2006-2018, RT-Thread Development Team
4 * SPDX-License-Identifier: Apache-2.0
8 * 2008-02-22 QiuYi The first version.
9 * 2011-10-08 Bernard fixed the block size in statfs.
10 * 2011-11-23 Bernard fixed the rename issue.
11 * 2012-07-26 aozima implement ff_memalloc and ff_memfree.
12 * 2012-12-19 Bernard fixed the O_APPEND and lseek issue.
13 * 2013-03-01 aozima fixed the stat(st_mtime) issue.
14 * 2014-01-26 Bernard Check the sector size before mount.
15 * 2017-02-13 Hichard Update Fatfs version to 0.12b, support exFAT.
16 * 2017-04-11 Bernard fix the st_blksize issue.
17 * 2017-05-26 Urey fix f_mount error when mount more fats
46 status = -ENOENT; in elm_result_to_dfs()
50 status = -EINVAL; in elm_result_to_dfs()
55 status = -EEXIST; in elm_result_to_dfs()
61 status = -EIO; in elm_result_to_dfs()
66 status = -EROFS; in elm_result_to_dfs()
70 status = -EINVAL; in elm_result_to_dfs()
74 status = -1; in elm_result_to_dfs()
82 * -1, no space to install fatfs driver
95 return -1; in get_disk()
108 if (index == -1) in dfs_elm_mount()
109 return -ENOENT; in dfs_elm_mount()
113 disk[index] = fs->dev_id; in dfs_elm_mount()
115 if (rt_device_control(fs->dev_id, RT_DEVICE_CTRL_BLK_GETGEOME, &geometry) == RT_EOK) in dfs_elm_mount()
120 return -EINVAL; in dfs_elm_mount()
128 return -ENOMEM; in dfs_elm_mount()
145 return -ENOMEM; in dfs_elm_mount()
154 fs->data = fat; in dfs_elm_mount()
173 fat = (FATFS *)fs->data; in dfs_elm_unmount()
178 index = get_disk(fs->dev_id); in dfs_elm_unmount()
179 if (index == -1) /* not found */ in dfs_elm_unmount()
180 return -ENOENT; in dfs_elm_unmount()
183 result = f_mount(RT_NULL, logic_nbr, (BYTE)1); in dfs_elm_unmount()
187 fs->data = RT_NULL; in dfs_elm_unmount()
199 BYTE *work; in dfs_elm_mkfs()
207 return -ENOMEM; in dfs_elm_mkfs()
213 return -EINVAL; in dfs_elm_mkfs()
222 if (index == -1) in dfs_elm_mkfs()
226 if (index == -1) in dfs_elm_mkfs()
231 return -ENOSPC; in dfs_elm_mkfs()
239 return -ENOMEM; in dfs_elm_mkfs()
255 f_mount(fat, logic_nbr, (BYTE)index); in dfs_elm_mkfs()
266 /* [-] Working buffer */ in dfs_elm_mkfs()
275 f_mount(RT_NULL, logic_nbr,(BYTE)index); in dfs_elm_mkfs()
294 char driver[4]; in dfs_elm_statfs()
300 f = (FATFS *)fs->data; in dfs_elm_statfs()
302 rt_snprintf(driver, sizeof(driver), "%d:", f->drv); in dfs_elm_statfs()
308 tot_sect = (f->n_fatent - 2) * f->csize; in dfs_elm_statfs()
309 fre_sect = fre_clust * f->csize; in dfs_elm_statfs()
311 buf->f_bfree = fre_sect; in dfs_elm_statfs()
312 buf->f_blocks = tot_sect; in dfs_elm_statfs()
314 buf->f_bsize = f->ssize; in dfs_elm_statfs()
316 buf->f_bsize = 512; in dfs_elm_statfs()
325 BYTE mode; in dfs_elm_open()
331 struct dfs_filesystem *fs = (struct dfs_filesystem *)file->data; in dfs_elm_open()
335 return -ENOENT; in dfs_elm_open()
338 vol = elm_get_vol((FATFS *)fs->data); in dfs_elm_open()
340 return -ENOENT; in dfs_elm_open()
343 return -ENOMEM; in dfs_elm_open()
345 rt_snprintf(drivers_fn, 256, "%d:%s", vol, file->path); in dfs_elm_open()
347 drivers_fn = file->path; in dfs_elm_open()
350 if (file->flags & O_DIRECTORY) in dfs_elm_open()
354 if (file->flags & O_CREAT) in dfs_elm_open()
373 return -ENOMEM; in dfs_elm_open()
386 file->data = dir; in dfs_elm_open()
393 if (file->flags & O_WRONLY) in dfs_elm_open()
395 if ((file->flags & O_ACCMODE) & O_RDWR) in dfs_elm_open()
398 if (file->flags & O_CREAT) in dfs_elm_open()
401 if (file->flags & O_TRUNC) in dfs_elm_open()
404 if (file->flags & O_EXCL) in dfs_elm_open()
414 return -ENOMEM; in dfs_elm_open()
423 file->pos = fd->fptr; in dfs_elm_open()
424 file->size = f_size(fd); in dfs_elm_open()
425 file->data = fd; in dfs_elm_open()
427 if (file->flags & O_APPEND) in dfs_elm_open()
431 file->pos = fd->fptr; in dfs_elm_open()
450 if (file->type == FT_DIRECTORY) in dfs_elm_close()
454 dir = (DIR *)(file->data); in dfs_elm_close()
460 else if (file->type == FT_REGULAR) in dfs_elm_close()
463 fd = (FIL *)(file->data); in dfs_elm_close()
479 return -ENOSYS; in dfs_elm_ioctl()
488 if (file->type == FT_DIRECTORY) in dfs_elm_read()
490 return -EISDIR; in dfs_elm_read()
493 fd = (FIL *)(file->data); in dfs_elm_read()
498 file->pos = fd->fptr; in dfs_elm_read()
511 if (file->type == FT_DIRECTORY) in dfs_elm_write()
513 return -EISDIR; in dfs_elm_write()
516 fd = (FIL *)(file->data); in dfs_elm_write()
521 file->pos = fd->fptr; in dfs_elm_write()
522 file->size = f_size(fd); in dfs_elm_write()
534 fd = (FIL *)(file->data); in dfs_elm_flush()
544 if (file->type == FT_REGULAR) in dfs_elm_lseek()
549 fd = (FIL *)(file->data); in dfs_elm_lseek()
556 file->pos = fd->fptr; in dfs_elm_lseek()
557 return fd->fptr; in dfs_elm_lseek()
560 else if (file->type == FT_DIRECTORY) in dfs_elm_lseek()
565 dir = (DIR *)(file->data); in dfs_elm_lseek()
572 file->pos = offset; in dfs_elm_lseek()
573 return file->pos; in dfs_elm_lseek()
588 dir = (DIR *)(file->data); in dfs_elm_getdents()
594 return -EINVAL; in dfs_elm_getdents()
613 d->d_type = DT_UNKNOWN; in dfs_elm_getdents()
615 d->d_type = DT_DIR; in dfs_elm_getdents()
617 d->d_type = DT_REG; in dfs_elm_getdents()
619 d->d_namlen = (rt_uint8_t)rt_strlen(fn); in dfs_elm_getdents()
620 d->d_reclen = (rt_uint16_t)sizeof(struct dirent); in dfs_elm_getdents()
621 rt_strncpy(d->d_name, fn, rt_strlen(fn) + 1); in dfs_elm_getdents()
631 file->pos += index * sizeof(struct dirent); in dfs_elm_getdents()
646 vol = elm_get_vol((FATFS *)fs->data); in dfs_elm_unlink()
648 return -ENOENT; in dfs_elm_unlink()
651 return -ENOMEM; in dfs_elm_unlink()
677 vol = elm_get_vol((FATFS *)fs->data); in dfs_elm_rename()
679 return -ENOENT; in dfs_elm_rename()
683 return -ENOMEM; in dfs_elm_rename()
712 vol = elm_get_vol((FATFS *)fs->data); in dfs_elm_stat()
714 return -ENOENT; in dfs_elm_stat()
717 return -ENOMEM; in dfs_elm_stat()
732 st->st_dev = 0; in dfs_elm_stat()
734 st->st_mode = S_IFREG | S_IRUSR | S_IRGRP | S_IROTH | in dfs_elm_stat()
738 st->st_mode &= ~S_IFREG; in dfs_elm_stat()
739 st->st_mode |= S_IFDIR | S_IXUSR | S_IXGRP | S_IXOTH; in dfs_elm_stat()
742 st->st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); in dfs_elm_stat()
744 st->st_size = file_info.fsize; in dfs_elm_stat()
753 day = tmp & 0x1F; /* bit[4:0] Day(1..31) */ in dfs_elm_stat()
756 tmp >>= 4; in dfs_elm_stat()
760 sec = (tmp & 0x1F) * 2; /* bit[4:0] Second/2(0..29) */ in dfs_elm_stat()
767 tm_file.tm_year = year - 1900; /* Years since 1900 */ in dfs_elm_stat()
768 tm_file.tm_mon = mon - 1; /* Months *since* january: 0-11 */ in dfs_elm_stat()
769 tm_file.tm_mday = day; /* Day of the month: 1-31 */ in dfs_elm_stat()
770 tm_file.tm_hour = hour; /* Hours since midnight: 0-23 */ in dfs_elm_stat()
771 tm_file.tm_min = min; /* Minutes: 0-59 */ in dfs_elm_stat()
772 tm_file.tm_sec = sec; /* Seconds: 0-59 */ in dfs_elm_stat()
774 st->st_mtime = mktime(&tm_file); in dfs_elm_stat()
820 * RT-Thread Device Interface for ELM FatFs
825 DSTATUS disk_initialize(BYTE drv) in disk_initialize()
831 DSTATUS disk_status(BYTE drv) in disk_status()
837 DRESULT disk_read (BYTE drv, BYTE* buff, DWORD sector, UINT count) in disk_read()
852 DRESULT disk_write (BYTE drv, const BYTE* buff, DWORD sector, UINT count) in disk_write()
867 DRESULT disk_ioctl(BYTE drv, BYTE ctrl, void *buff) in disk_ioctl()
936 fat_time = (DWORD)(tm_now.tm_year - 80) << 25 | in get_fattime()
948 int ff_cre_syncobj(BYTE drv, _SYNC_t *m) in ff_cre_syncobj()