Changes in kernel/generic/src/ddi/ddi.c [8cd680c:bf9cb2f] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ddi/ddi.c
r8cd680c rbf9cb2f 211 211 NO_TRACE static int physmem_unmap(uintptr_t virt) 212 212 { 213 ASSERT(TASK); 214 215 return as_area_destroy(TASK->as, virt); 213 // TODO: implement unmap 214 return EOK; 216 215 } 217 216 … … 256 255 /** Enable range of I/O space for task. 257 256 * 258 * @param id 257 * @param id Task ID of the destination task. 259 258 * @param ioaddr Starting I/O address. 260 * @param size Size of the enabled I/O space.259 * @param size Size of the enabled I/O space.. 261 260 * 262 261 * @return 0 on success, EPERM if the caller lacks capabilities to use this … … 291 290 int rc = ddi_iospace_enable_arch(task, ioaddr, size); 292 291 irq_spinlock_unlock(&task->lock, true); 293 294 return rc;295 }296 297 /** Disable range of I/O space for task.298 *299 * @param id Task ID of the destination task.300 * @param ioaddr Starting I/O address.301 * @param size Size of the enabled I/O space.302 *303 * @return 0 on success, EPERM if the caller lacks capabilities to use this304 * syscall, ENOENT if there is no task matching the specified ID.305 *306 */307 NO_TRACE static int iospace_disable(task_id_t id, uintptr_t ioaddr, size_t size)308 {309 /*310 * Make sure the caller is authorised to make this syscall.311 */312 cap_t caps = cap_get(TASK);313 if (!(caps & CAP_IO_MANAGER))314 return EPERM;315 316 irq_spinlock_lock(&tasks_lock, true);317 318 task_t *task = task_find_by_id(id);319 320 if ((!task) || (!container_check(CONTAINER, task->container))) {321 /*322 * There is no task with the specified ID323 * or the task belongs to a different security324 * context.325 */326 irq_spinlock_unlock(&tasks_lock, true);327 return ENOENT;328 }329 330 /* Lock the task and release the lock protecting tasks_btree. */331 irq_spinlock_exchange(&tasks_lock, &task->lock);332 int rc = ddi_iospace_disable_arch(task, ioaddr, size);333 irq_spinlock_unlock(&task->lock, true);334 292 335 293 return rc; … … 356 314 sysarg_t sys_iospace_disable(ddi_ioarg_t *uspace_io_arg) 357 315 { 358 ddi_ioarg_t arg; 359 int rc = copy_from_uspace(&arg, uspace_io_arg, sizeof(ddi_ioarg_t)); 360 if (rc != 0) 361 return (sysarg_t) rc; 362 363 return (sysarg_t) iospace_disable((task_id_t) arg.task_id, 364 (uintptr_t) arg.ioaddr, (size_t) arg.size); 316 // TODO: implement 317 return ENOTSUP; 365 318 } 366 319
Note:
See TracChangeset
for help on using the changeset viewer.