Changeset 440 for trunk/kernel/syscalls/sys_write.c
- Timestamp:
- May 3, 2018, 5:51:22 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/syscalls/sys_write.c
r438 r440 2 2 * sys_write.c - write bytes to a file 3 3 * 4 * Author Alain Greiner (2016,2017 )4 * Author Alain Greiner (2016,2017,2018) 5 5 * 6 6 * Copyright (c) UPMC Sorbonne Universites … … 35 35 /* TODO: concurrent user page(s) unmap need to be handled [AG] */ 36 36 37 extern uint32_t enter_sys_write; 38 extern uint32_t enter_devfs_write; 39 extern uint32_t enter_txt_write; 40 extern uint32_t enter_chdev_cmd_write; 41 extern uint32_t enter_chdev_server_write; 42 extern uint32_t enter_tty_cmd_write; 43 extern uint32_t enter_tty_isr_write; 44 extern uint32_t exit_tty_isr_write; 45 extern uint32_t exit_tty_cmd_write; 46 extern uint32_t exit_chdev_server_write; 47 extern uint32_t exit_chdev_cmd_write; 48 extern uint32_t exit_txt_write; 49 extern uint32_t exit_devfs_write; 50 extern uint32_t exit_sys_write; 51 37 52 ////////////////////////////////// 38 53 int sys_write( uint32_t file_id, … … 41 56 { 42 57 error_t error; 43 paddr_t paddr;// required for user space checking58 vseg_t * vseg; // required for user space checking 44 59 xptr_t file_xp; // remote file extended pointer 45 60 uint32_t nbytes; // number of bytes actually written 46 61 reg_t save_sr; // required to enable IRQs during syscall 47 62 48 #if (DEBUG_SYS_WRITE _DEBUG& 1)49 enter_sys_ read= (uint32_t)tm_start;63 #if (DEBUG_SYS_WRITE & 1) 64 enter_sys_write = (uint32_t)tm_start; 50 65 #endif 51 66 … … 74 89 75 90 // check user buffer in user space 76 error = vmm_ v2p_translate( false , vaddr , &paddr);91 error = vmm_get_vseg( process , (intptr_t)vaddr , &vseg ); 77 92 78 93 if ( error ) … … 80 95 81 96 #if DEBUG_SYSCALLS_ERROR 82 printk("\n[ERROR] in %s : user buffer unmapped = %x\n", __FUNCTION__ , (intptr_t)vaddr ); 97 printk("\n[ERROR] in %s : user buffer unmapped %x / thread %x / process %x\n", 98 __FUNCTION__ , (intptr_t)vaddr, this->trdid, process->pid ); 99 vmm_display( process , false ); 83 100 #endif 84 101 this->errno = EINVAL;
Note: See TracChangeset
for help on using the changeset viewer.