Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ddi/ddi.c

    r8cd680c rbf9cb2f  
    211211NO_TRACE static int physmem_unmap(uintptr_t virt)
    212212{
    213         ASSERT(TASK);
    214 
    215         return as_area_destroy(TASK->as, virt);
     213        // TODO: implement unmap
     214        return EOK;
    216215}
    217216
     
    256255/** Enable range of I/O space for task.
    257256 *
    258  * @param id     Task ID of the destination task.
     257 * @param id Task ID of the destination task.
    259258 * @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..
    261260 *
    262261 * @return 0 on success, EPERM if the caller lacks capabilities to use this
     
    291290        int rc = ddi_iospace_enable_arch(task, ioaddr, size);
    292291        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 this
    304  *           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 ID
    323                  * or the task belongs to a different security
    324                  * 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);
    334292       
    335293        return rc;
     
    356314sysarg_t sys_iospace_disable(ddi_ioarg_t *uspace_io_arg)
    357315{
    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;
    365318}
    366319
Note: See TracChangeset for help on using the changeset viewer.