Changeset 407 for trunk/kernel/syscalls/sys_closedir.c
- Timestamp:
- Nov 7, 2017, 3:08:12 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/syscalls/sys_closedir.c
r23 r407 24 24 #include <hal_types.h> 25 25 #include <vfs.h> 26 #include <printk.h> 26 27 #include <thread.h> 27 #include <printk.h>28 28 #include <process.h> 29 #include <errno.h> 30 #include <syscalls.h> 31 #include <shared_syscalls.h> 29 32 30 /////////////////////////////// //////31 int sys_closedir ( uint32_t file_id)33 /////////////////////////////// 34 int sys_closedir ( DIR * dirp ) 32 35 { 33 error_t error; 34 xptr_t file_xp; // extended pointer on searched directory file descriptor 35 36 thread_t * this = CURRENT_THREAD; 37 process_t * process = this->process; 38 39 // check file_id argument 40 if( file_id >= CONFIG_PROCESS_FILE_MAX_NR ) 41 { 42 printk("\n[ERROR] in %s : illegal file descriptor index %d\n", 43 __FUNCTION__ , file_id ); 44 this->errno = EBADFD; 45 return -1; 46 } 47 48 // get extended pointer on remote file descriptor 49 file_xp = process_fd_get_xptr( process , file_id ); 50 51 if( file_xp == XPTR_NULL ) 52 { 53 printk("\n[ERROR] in %s : undefined file descriptor index = %d\n", 54 __FUNCTION__ , file_id ); 55 this->errno = EBADFD; 56 return -1; 57 } 58 59 // call relevant VFS function 60 error = vfs_close( file_xp , file_id ); 61 62 if( error ) 63 { 64 printk("\n[ERROR] in %s : cannot close the directory = %d\n", 65 __FUNCTION__ , file_id ); 66 this->errno = error; 67 return -1; 68 } 69 70 return 0; 71 36 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__ ); 37 CURRENT_THREAD->errno = ENOMEM; 38 return -1; 72 39 } // end sys_closedir()
Note: See TracChangeset
for help on using the changeset viewer.