- Timestamp:
- 2006-05-02T18:19:43Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 281224a
- Parents:
- e34a141
- Location:
- generic
- Files:
-
- 5 edited
-
include/ddi/ddi.h (modified) (1 diff)
-
include/security/cap.h (modified) (1 diff)
-
include/syscall/syscall.h (modified) (1 diff)
-
src/ddi/ddi.c (modified) (1 diff)
-
src/syscall/syscall.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
generic/include/ddi/ddi.h
re34a141 r738ad2e 40 40 * Interface to be implemented by all architectures. 41 41 */ 42 extern __native ddi_int_control_arch(__native enable, __native *flags);43 extern __native ddi_int_control(__native enable, __native *flags);44 42 extern int ddi_iospace_enable_arch(task_t *task, __address ioaddr, size_t size); 45 43 -
generic/include/security/cap.h
re34a141 r738ad2e 64 64 65 65 /** 66 * CAP_ INT_CONTROL allows its holder to disable interrupts66 * CAP_PREEMPT_CONTROL allows its holder to disable interrupts 67 67 */ 68 #define CAP_ INT_CONTROL (1<<3)68 #define CAP_PREEMPT_CONTROL (1<<3) 69 69 70 70 typedef __u32 cap_t; -
generic/include/syscall/syscall.h
re34a141 r738ad2e 33 33 SYS_IO = 0, 34 34 SYS_TLS_SET = 1, /* Hardcoded in AMD64,IA32 uspace - psthread.S */ 35 SYS_ INT_CONTROL = 2, /* Hardcoded in all SYSCALL handlers */35 SYS_PREEMPT_CONTROL, 36 36 SYS_THREAD_CREATE, 37 37 SYS_THREAD_EXIT, -
generic/src/ddi/ddi.c
re34a141 r738ad2e 204 204 return (__native) ddi_iospace_enable((task_id_t) arg.task_id, (__address) arg.ioaddr, (size_t) arg.size); 205 205 } 206 207 __native ddi_int_control(__native enable, __native *flags)208 {209 if (! cap_get(TASK) & CAP_INT_CONTROL)210 return EPERM;211 return ddi_int_control_arch(enable, flags);212 } -
generic/src/syscall/syscall.c
re34a141 r738ad2e 57 57 } 58 58 59 static __native sys_ int_control(int enable)59 static __native sys_preempt_control(int enable) 60 60 { 61 panic("Not implemented."); 61 if (! cap_get(TASK) & CAP_PREEMPT_CONTROL) 62 return EPERM; 63 if (enable) 64 preemption_enable(); 65 else 66 preemption_disable(); 67 return 0; 62 68 } 63 69 … … 75 81 sys_io, 76 82 sys_tls_set, 77 sys_ int_control,83 sys_preempt_control, 78 84 79 85 /* Thread and task related syscalls. */
Note:
See TracChangeset
for help on using the changeset viewer.
