Changeset 473 for trunk/kernel
- Timestamp:
- Aug 21, 2018, 6:01:01 PM (6 years ago)
- Location:
- trunk/kernel
- Files:
-
- 2 deleted
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/Makefile
r457 r473 86 86 build/kern/dqdt.o \ 87 87 build/kern/do_syscall.o \ 88 build/kern/do_interrupt.o \89 88 build/kern/rpc.o 90 89 -
trunk/kernel/fs/fatfs.c
r463 r473 55 55 ////////////////////////////////////////////////////////////////////////////////////////// 56 56 57 static inline int get_length( int offset , int length ) { return length; }58 59 static inline int get_offset( int offset , int length ) { return offset; }57 static inline int get_length( int offset , int length ) { if( offset + 1 ) return length; } 58 59 static inline int get_offset( int offset , int length ) { if( length + 1 ) return offset; } 60 60 61 61 -
trunk/kernel/fs/vfs.c
r459 r473 94 94 uint32_t lid = bitmap_ffc( ctx->bitmap , CONFIG_VFS_MAX_INODES ); 95 95 96 if( lid == -1) // no more free slot => error96 if( lid == 0xFFFFFFFF ) // no more free slot => error 97 97 { 98 98 // release lock … … 321 321 // get inode cluster and local pointer 322 322 cxy_t inode_cxy = GET_CXY( inode_xp ); 323 vfs_inode_t * inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );323 vfs_inode_t * inode_ptr = GET_PTR( inode_xp ); 324 324 325 325 hal_remote_atomic_add( XPTR( inode_cxy , &inode_ptr->refcount ) , 1 ); … … 331 331 // get inode cluster and local pointer 332 332 cxy_t inode_cxy = GET_CXY( inode_xp ); 333 vfs_inode_t * inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );333 vfs_inode_t * inode_ptr = GET_PTR( inode_xp ); 334 334 335 335 hal_remote_atomic_add( XPTR( inode_cxy , &inode_ptr->refcount ) , -1 ); … … 341 341 // get inode cluster and local pointer 342 342 cxy_t cxy = GET_CXY( inode_xp ); 343 vfs_inode_t * ptr = (vfs_inode_t *)GET_PTR( inode_xp );343 vfs_inode_t * ptr = GET_PTR( inode_xp ); 344 344 345 345 // get size … … 356 356 // get inode cluster and local pointer 357 357 cxy_t cxy = GET_CXY( inode_xp ); 358 vfs_inode_t * ptr = (vfs_inode_t *)GET_PTR( inode_xp );358 vfs_inode_t * ptr = GET_PTR( inode_xp ); 359 359 360 360 // set size … … 369 369 // get inode cluster and local pointer 370 370 cxy_t cxy = GET_CXY( inode_xp ); 371 vfs_inode_t * ptr = (vfs_inode_t *)GET_PTR( inode_xp );371 vfs_inode_t * ptr = GET_PTR( inode_xp ); 372 372 373 373 // release the main lock … … 380 380 // get inode cluster and local pointer 381 381 cxy_t cxy = GET_CXY( inode_xp ); 382 vfs_inode_t * ptr = (vfs_inode_t *)GET_PTR( inode_xp );382 vfs_inode_t * ptr = GET_PTR( inode_xp ); 383 383 384 384 // get the main lock … … 398 398 // get inode cluster and local pointer 399 399 inode_cxy = GET_CXY( inode_xp ); 400 inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );400 inode_ptr = GET_PTR( inode_xp ); 401 401 402 402 // get parent dentry … … 411 411 { 412 412 dentry_cxy = GET_CXY( dentry_xp ); 413 dentry_ptr = (vfs_dentry_t *)GET_PTR( dentry_xp );413 dentry_ptr = GET_PTR( dentry_xp ); 414 414 415 415 hal_remote_strcpy( XPTR( local_cxy , name ) , … … 641 641 xptr_t file_xp; // extended pointer on created file descriptor 642 642 uint32_t file_id; // created file descriptor index in reference fd_array 643 644 assert( (mode == 0), __FUNCTION__, 645 "the mode parameter is not supported yet\n" ); 643 646 644 647 #if DEBUG_VFS_OPEN … … 670 673 // get target inode cluster and local pointer 671 674 inode_cxy = GET_CXY( inode_xp ); 672 inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );675 inode_ptr = GET_PTR( inode_xp ); 673 676 674 677 // create a new file descriptor in cluster containing inode … … 721 724 // get cluster and local pointer on remote file descriptor 722 725 file_cxy = GET_CXY( file_xp ); 723 file_ptr = (vfs_file_t *)GET_PTR( file_xp );726 file_ptr = GET_PTR( file_xp ); 724 727 725 728 // get inode type from remote file descriptor … … 776 779 // get cluster and local pointer on remote file descriptor 777 780 file_cxy = GET_CXY( file_xp ); 778 file_ptr = (vfs_file_t *)GET_PTR( file_xp );781 file_ptr = GET_PTR( file_xp ); 779 782 780 783 // get inode type from remote file descriptor … … 836 839 // get cluster and local pointer on remote file descriptor 837 840 file_cxy = GET_CXY( file_xp ); 838 file_ptr = (vfs_file_t *)GET_PTR( file_xp );841 file_ptr = GET_PTR( file_xp ); 839 842 840 843 // build extended pointers on lock and offset … … 993 996 char * path ) 994 997 { 995 assert( false , __FUNCTION__ , "not implemented\n" );998 assert( false , __FUNCTION__ , "not implemented\n", cwd_xp, path ); 996 999 return 0; 997 1000 } … … 1001 1004 struct stat * k_stat ) 1002 1005 { 1003 assert( false , __FUNCTION__ , "not implemented\n" );1006 assert( false , __FUNCTION__ , "not implemented\n", file_xp, k_stat ); 1004 1007 return 0; 1005 1008 } … … 1009 1012 struct dirent * k_dirent ) 1010 1013 { 1011 assert( false , __FUNCTION__ , "not implemented\n" );1014 assert( false , __FUNCTION__ , "not implemented\n", file_xp, k_dirent ); 1012 1015 return 0; 1013 1016 } … … 1018 1021 uint32_t mode ) 1019 1022 { 1020 assert( false , __FUNCTION__ , "not implemented\n" );1023 assert( false , __FUNCTION__ , "not implemented\n", file_xp, path, mode ); 1021 1024 return 0; 1022 1025 } … … 1026 1029 char * path ) 1027 1030 { 1028 assert( false , __FUNCTION__ , "not implemented\n" );1031 assert( false , __FUNCTION__ , "not implemented\n", file_xp, path ); 1029 1032 return 0; 1030 1033 } … … 1051 1054 // get inode cluster and local pointer 1052 1055 inode_cxy = GET_CXY( inode_xp ); 1053 inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );1056 inode_ptr = GET_PTR( inode_xp ); 1054 1057 1055 1058 // get inode type from remote file … … 1075 1078 cxy_t inode_cxy; // inode cluster identifier 1076 1079 vfs_inode_t * inode_ptr; // inode local pointer 1077 uint32_t mode; // lookup working mode1078 1080 vfs_inode_type_t inode_type; // target inode type 1079 1081 1080 1082 // set lookup working mode 1081 mode = 0; 1083 assert( (rights == 0), __FUNCTION__, 1084 "access rights non implemented yet\n" ); 1082 1085 1083 1086 // get extended pointer on target inode 1084 error = vfs_lookup( cwd_xp , path , mode, &inode_xp );1087 error = vfs_lookup( cwd_xp , path , 0 , &inode_xp ); 1085 1088 1086 1089 if( error ) return error; … … 1088 1091 // get inode cluster and local pointer 1089 1092 inode_cxy = GET_CXY( inode_xp ); 1090 inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );1093 inode_ptr = GET_PTR( inode_xp ); 1091 1094 1092 1095 // get inode type from remote inode … … 1103 1106 uint32_t rights ) 1104 1107 { 1105 assert( false , __FUNCTION__ , "not implemented\n" );1108 assert( false , __FUNCTION__ , "not implemented\n", cwd_xp, path, rights ); 1106 1109 return 0; 1107 1110 } … … 1133 1136 static void vfs_recursive_display( xptr_t inode_xp, 1134 1137 xptr_t name_xp, 1135 xptr_t dentry_xp,1136 1138 uint32_t indent ) 1137 1139 { … … 1172 1174 // get inode cluster and local pointer 1173 1175 inode_cxy = GET_CXY( inode_xp ); 1174 inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );1176 inode_ptr = GET_PTR( inode_xp ); 1175 1177 1176 1178 // get inode type … … 1204 1206 // get dentry cluster and local pointer 1205 1207 child_dentry_cxy = GET_CXY( child_dentry_xp ); 1206 child_dentry_ptr = (vfs_dentry_t *)GET_PTR( child_dentry_xp );1208 child_dentry_ptr = GET_PTR( child_dentry_xp ); 1207 1209 1208 1210 // get extended pointer on child inode … … 1216 1218 vfs_recursive_display( child_inode_xp, 1217 1219 child_dentry_name_xp, 1218 child_dentry_xp,1219 1220 indent+1 ); 1220 1221 … … 1239 1240 // get target inode cluster and local pointer 1240 1241 cxy_t inode_cxy = GET_CXY( inode_xp ); 1241 vfs_inode_t * inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );1242 vfs_inode_t * inode_ptr = GET_PTR( inode_xp ); 1242 1243 1243 1244 // get extended pointer on associated dentry … … 1254 1255 // get dentry cluster and local pointer 1255 1256 dentry_cxy = GET_CXY( dentry_xp ); 1256 dentry_ptr = (vfs_dentry_t *)GET_PTR( dentry_xp );1257 dentry_ptr = GET_PTR( dentry_xp ); 1257 1258 1258 1259 // get extended pointer on dentry name … … 1275 1276 1276 1277 // call recursive function 1277 vfs_recursive_display( inode_xp , name_xp , dentry_xp ,0 );1278 vfs_recursive_display( inode_xp , name_xp , 0 ); 1278 1279 1279 1280 // release lock … … 1299 1300 // get found inode cluster and local pointer 1300 1301 cxy_t inode_cxy = GET_CXY( inode_xp ); 1301 vfs_inode_t * inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );1302 vfs_inode_t * inode_ptr = GET_PTR( inode_xp ); 1302 1303 1303 1304 // get inode access mode, UID, and GID … … 1331 1332 // get parent inode cluster and local pointer 1332 1333 cxy_t parent_cxy = GET_CXY( parent_xp ); 1333 vfs_inode_t * parent_ptr = (vfs_inode_t *)GET_PTR( parent_xp );1334 vfs_inode_t * parent_ptr = GET_PTR( parent_xp ); 1334 1335 1335 1336 // get extended pointer on hash table of children directory entries … … 1343 1344 // get dentry cluster and local pointer 1344 1345 cxy_t dentry_cxy = GET_CXY( dentry_xp ); 1345 vfs_dentry_t * dentry_ptr = (vfs_dentry_t *)GET_PTR( dentry_xp );1346 vfs_dentry_t * dentry_ptr = GET_PTR( dentry_xp ); 1346 1347 1347 1348 // return child inode … … 1701 1702 // get inode cluster and local pointer 1702 1703 cxy_t inode_cxy = GET_CXY( inode_xp ); 1703 vfs_inode_t * inode_ptr = (vfs_inode_t *)GET_PTR( inode_xp );1704 vfs_inode_t * inode_ptr = GET_PTR( inode_xp ); 1704 1705 1705 1706 // get extended pointer on parent dentry … … 1708 1709 // get dentry cluster and local pointer 1709 1710 cxy_t dentry_cxy = GET_CXY( dentry_xp ); 1710 vfs_dentry_t * dentry_ptr = (vfs_dentry_t *)GET_PTR( dentry_xp );1711 vfs_dentry_t * dentry_ptr = GET_PTR( dentry_xp ); 1711 1712 1712 1713 // get dentry name length and pointer … … 1864 1865 // 3. update extended pointer on inode in dentry 1865 1866 cxy_t dentry_cxy = GET_CXY( dentry_xp ); 1866 vfs_dentry_t * dentry_ptr = (vfs_dentry_t *)GET_PTR( dentry_xp );1867 vfs_dentry_t * dentry_ptr = GET_PTR( dentry_xp ); 1867 1868 hal_remote_swd( XPTR( dentry_cxy , &dentry_ptr->child_xp ) , inode_xp ); 1868 1869 -
trunk/kernel/kern/do_syscall.c
r457 r473 180 180 181 181 // update user time 182 thread_ user_time_update( this );182 thread_time_update( this , 1 ); 183 183 184 184 // check syscall index … … 204 204 205 205 // update kernel time 206 thread_ kernel_time_update( this);206 thread_time_update( this , 0 ); 207 207 208 208 return error; -
trunk/kernel/kern/rpc.c
r459 r473 1108 1108 rpc_send( cxy , &rpc ); 1109 1109 1110 // get output argument from RPC descriptor 1111 *error = (error_t)rpc.args[1]; 1112 1110 1113 #if DEBUG_RPC_VFS_INODE_DESTROY 1111 1114 uint32_t cycle = (uint32_t)hal_get_cycles(); … … 1248 1251 ///////////////////////////////////////////////////////////////////////////////////////// 1249 1252 1250 1251 1253 /////////////////////////////////////////////////////// 1252 1254 void rpc_vfs_dentry_destroy_client( cxy_t cxy, … … 1274 1276 // register RPC request in remote RPC fifo 1275 1277 rpc_send( cxy , &rpc ); 1278 1279 // get output argument from RPC descriptor 1280 *error = (error_t)rpc.args[1]; 1276 1281 1277 1282 #if DEBUG_RPC_VFS_DENTRY_DESTROY -
trunk/kernel/kern/thread.c
r469 r473 528 528 if( error ) 529 529 { 530 vseg_detach( &child_process->vmm ,vseg );530 vseg_detach( vseg ); 531 531 vseg_free( vseg ); 532 532 thread_release( child_ptr ); … … 549 549 // increment the forks counter 550 550 remote_spinlock_lock( lock_xp ); 551 hal_remote_atomic_add( XPTR( page_cxy , &page_ptr->forks ), 1 );551 hal_remote_atomic_add( forks_xp , 1 ); 552 552 remote_spinlock_unlock( lock_xp ); 553 553 … … 1130 1130 1131 1131 1132 ///////////////////////////////////////////////// 1133 void thread_user_time_update( thread_t * thread ) 1134 { 1135 // TODO 1136 // printk("\n[WARNING] function %s not implemented\n", __FUNCTION__ ); 1137 } 1138 1139 /////////////////////////////////////////////////// 1140 void thread_kernel_time_update( thread_t * thread ) 1141 { 1142 // TODO 1143 // printk("\n[WARNING] function %s not implemented\n", __FUNCTION__ ); 1132 /////////////////////////////////////////// 1133 void thread_time_update( thread_t * thread, 1134 uint32_t is_user ) 1135 { 1136 cycle_t current_cycle; // current cycle counter value 1137 cycle_t last_cycle; // last cycle counter value 1138 1139 // get pointer on thread_info structure 1140 thread_info_t * info = &thread->info; 1141 1142 // get last cycle counter value 1143 last_cycle = info->last_cycle; 1144 1145 // get current cycle counter value 1146 current_cycle = hal_get_cycles(); 1147 1148 // update thread_info structure 1149 info->last_cycle = current_cycle; 1150 1151 // update time in thread_info 1152 if( is_user ) info->usr_cycles += (current_cycle - last_cycle); 1153 else info->sys_cycles += (current_cycle - last_cycle); 1144 1154 } 1145 1155 -
trunk/kernel/kern/thread.h
r459 r473 103 103 uint32_t u_err_nr; /*! TODO ??? [AG] */ 104 104 uint32_t m_err_nr; /*! TODO ??? [AG] */ 105 uint32_t tm_tmp; /*! temp date to compute execution duration */ 106 uint32_t tm_exec; /*! TODO ??? [AG] */ 107 uint32_t tm_create; /*! date of the creation */ 108 uint32_t tm_born; /*! date of the thread loading */ 109 uint32_t tm_dead; /*! date of the death */ 110 cycle_t tm_sleep; /*! TODO ??? [AG] */ 111 cycle_t tm_wait; /*! TODO ??? [AG] */ 112 cycle_t tm_usr; /*! user execution duration */ 113 cycle_t tm_sys; /*! system execution duration */ 105 cycle_t last_cycle; /*! last cycle counter value (date) */ 106 cycle_t usr_cycles; /*! user execution duration (cycles) */ 107 cycle_t sys_cycles; /*! system execution duration (cycles) */ 114 108 } 115 109 thread_info_t; … … 435 429 436 430 /*************************************************************************************** 437 * This function updates the calling thread user_time counter, and resets the thread 438 * cycles counter. 439 * TODO This function is not implemented. 431 * This function updates the calling thread user_time or kernel_time counters. 440 432 *************************************************************************************** 441 433 * @ thread : local pointer on target thread. 442 **************************************************************************************/ 443 void thread_user_time_update( thread_t * thread ); 444 445 /**************************************************************************************n 446 * This function updates the calling thread kernel_time counter, and resets the thread 447 * cycles counter. 448 * TODO This function is not implemented. 449 *************************************************************************************** 450 * @ thread : local pointer on target thread. 451 **************************************************************************************/ 452 void thread_kernel_time_update( thread_t * thread ); 434 * @ is_user : update user time if non zero / update kernel time if zero 435 **************************************************************************************/ 436 void thread_time_update( thread_t * thread, 437 uint32_t is_user ); 453 438 454 439 /*************************************************************************************** -
trunk/kernel/libk/bits.c
r457 r473 81 81 if((len + bit) >= 32) 82 82 { 83 val = (bit == 0) ? 0xFFFFFFFF : (1 << (32 - bit)) - 1; 83 if( bit == 0 ) val = 0xFFFFFFFF; 84 else val = (uint32_t)((1 << (32 - bit)) - 1); 85 84 86 bitmap[word] |= (val << bit); 85 87 word++; … … 108 110 if((len + bit) >= 32) 109 111 { 110 val = (bit == 0) ? 0xFFFFFFFF : (1 << (32 - bit)) - 1; 112 if( bit == 0 ) val = 0xFFFFFFFF; 113 else val = (uint32_t)((1 << (32 - bit)) - 1); 114 111 115 bitmap[word] &= ~(val << bit); 112 116 word++; -
trunk/kernel/libk/grdxt.c
r457 r473 73 73 req.type = KMEM_GENERIC; 74 74 75 for( ix1=0 ; ix1 < ( 1 << w1) ; ix1++ )75 for( ix1=0 ; ix1 < (uint32_t)(1 << w1) ; ix1++ ) 76 76 { 77 77 ptr2 = ptr1[ix1]; … … 79 79 if( ptr2 == NULL ) continue; 80 80 81 for( ix2=0 ; ix2 < ( 1 << w2) ; ix2++ )81 for( ix2=0 ; ix2 < (uint32_t)(1 << w2) ; ix2++ ) 82 82 { 83 83 ptr3 = ptr2[ix2]; … … 129 129 name, 1<<w1 , 1<<w2 , 1<<w3 ); 130 130 131 for( ix1=0 ; ix1 < ( 1<<w1) ; ix1++ )131 for( ix1=0 ; ix1 < (uint32_t)(1<<w1) ; ix1++ ) 132 132 { 133 133 ptr2 = ptr1[ix1]; 134 134 if( ptr2 == NULL ) continue; 135 135 136 for( ix2=0 ; ix2 < ( 1<<w2) ; ix2++ )136 for( ix2=0 ; ix2 < (uint32_t)(1<<w2) ; ix2++ ) 137 137 { 138 138 ptr3 = ptr2[ix2]; 139 139 if( ptr3 == NULL ) continue; 140 140 141 for( ix3=0 ; ix3 < ( 1<<w3) ; ix3++ )141 for( ix3=0 ; ix3 < (uint32_t)(1<<w3) ; ix3++ ) 142 142 { 143 143 value = (intptr_t)ptr3[ix3]; -
trunk/kernel/libk/spinlock.c
r461 r473 47 47 /////////////////////////////////////////// 48 48 void spinlock_lock_busy( spinlock_t * lock, 49 uint32_t* irq_state )49 reg_t * irq_state ) 50 50 { 51 51 reg_t mode; … … 82 82 ////////////////////////////////////////////// 83 83 void spinlock_unlock_busy( spinlock_t * lock, 84 uint32_tirq_state )84 reg_t irq_state ) 85 85 { 86 86 thread_t * this = CURRENT_THREAD; -
trunk/kernel/mm/vmm.c
r469 r473 718 718 719 719 // remove vseg from VSL 720 vseg_detach( v mm , vseg );720 vseg_detach( vseg ); 721 721 722 722 // release memory allocated to vseg descriptor … … 747 747 __FUNCTION__ , vseg_type_str( vseg->type ), vseg->vpn_base, vseg->vpn_size ); 748 748 #endif 749 vseg_detach( v mm , vseg );749 vseg_detach( vseg ); 750 750 vseg_free( vseg ); 751 751 … … 1022 1022 // get pointers on calling process and VMM 1023 1023 thread_t * this = CURRENT_THREAD; 1024 process_t * process = this->process;1025 1024 vmm_t * vmm = &this->process->vmm; 1026 1025 uint32_t type = vseg->type; … … 1029 1028 xptr_t lock_xp = XPTR( local_cxy , &vmm->vsegs_lock ); 1030 1029 remote_rwlock_wr_lock( lock_xp ); 1031 vseg_detach( &process->vmm ,vseg );1030 vseg_detach( vseg ); 1032 1031 remote_rwlock_wr_unlock( lock_xp ); 1033 1032 -
trunk/kernel/mm/vseg.c
r457 r473 209 209 } 210 210 211 /////////////////////////////// 212 void vseg_detach( vmm_t * vmm, 213 vseg_t * vseg ) 211 ///////////////////////////////// 212 void vseg_detach( vseg_t * vseg ) 214 213 { 215 214 // update vseg descriptor -
trunk/kernel/mm/vseg.h
r457 r473 161 161 * The lock protecting the vsegs list in VMM must be taken by the caller. 162 162 ******************************************************************************************* 163 * @ vmm : pointer on the VMM164 163 * @ vseg : pointer on the vseg descriptor 165 164 ******************************************************************************************/ 166 void vseg_detach( struct vmm_s * vmm, 167 vseg_t * vseg ); 165 void vseg_detach( vseg_t * vseg ); 168 166 169 167 -
trunk/kernel/syscalls/shared_include/shared_stdlib.h
r445 r473 35 35 exit_statut_t; 36 36 37 38 #define RAND_MAX 6553539 40 #ifndef NULL41 #define NULL (void *)042 37 #endif 43 44 #endif -
trunk/kernel/syscalls/sys_alarm.c
r457 r473 37 37 38 38 printk("\n[ERROR] in %s for thread %x in process %x : not implemented yet\n", 39 __FUNCTION__ , this->trdid , process->pid ); 40 this->errno = EFAULT; 39 __FUNCTION__ , this->trdid , process->pid , cycles ); 41 40 return -1; 42 41 } -
trunk/kernel/syscalls/sys_closedir.c
r457 r473 34 34 int sys_closedir ( DIR * dirp ) 35 35 { 36 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__ ); 37 CURRENT_THREAD->errno = ENOMEM; 36 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__, dirp ); 38 37 return -1; 39 38 } // end sys_closedir() -
trunk/kernel/syscalls/sys_opendir.c
r457 r473 35 35 DIR ** dirp ) 36 36 { 37 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__ ); 38 CURRENT_THREAD->errno = ENOMEM; 37 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__, pathname, dirp ); 39 38 return -1; 40 39 } // end sys opendir() -
trunk/kernel/syscalls/sys_pipe.c
r457 r473 33 33 thread_t * this = CURRENT_THREAD; 34 34 35 printk("\n[ERROR] in %d : not implemented yet\n", __FUNCTION__ ); 36 this->errno = ENOSYS; 35 printk("\n[ERROR] in %d : not implemented yet\n", __FUNCTION__, file_fd ); 37 36 return -1; 38 37 } -
trunk/kernel/syscalls/sys_readdir.c
r457 r473 37 37 struct dirent ** dentp ) 38 38 { 39 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__ ); 40 CURRENT_THREAD->errno = ENOMEM; 39 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__, dirp, dentp ); 41 40 return -1; 42 41 } // end sys_readdir() -
trunk/kernel/syscalls/sys_signal.c
r457 r473 33 33 { 34 34 thread_t * this = CURRENT_THREAD; 35 process_t * process = this->process; 35 36 36 printk("\n[ERROR] in %s : not implemented yet\n", __FUNCTION__ );37 this->errno = EINVAL;37 printk("\n[ERROR] in %s : thread %x in process %x / not implemented yet\n", 38 __FUNCTION__, this->trdid, process->pid, sig_id, handler ); 38 39 return -1; 39 40 } -
trunk/kernel/syscalls/sys_thread_join.c
r457 r473 96 96 97 97 #if DEBUG_SYSCALLS_ERROR 98 printk("\n[ERROR] in %s : this thread == target thread\n", __FUNCTION__ ); 98 printk("\n[ERROR] in %s : this thread (%x) == target thread(%x)\n", 99 __FUNCTION__, joining_ptr->trdid, trdid ); 99 100 #endif 100 101 joining_ptr->errno = EDEADLK;
Note: See TracChangeset
for help on using the changeset viewer.