Changeset 8cd680c in mainline for kernel/arch/amd64/src/ddi/ddi.c


Ignore:
Timestamp:
2014-08-18T20:34:28Z (10 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6eeb4a3
Parents:
8820544
Message:

Add pio_disable().

  • Implement *iospace_disable*().
  • Implement physmem_unmap().
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/ddi/ddi.c

    r8820544 r8cd680c  
    5151 *
    5252 * @param task   Task.
    53  * @param ioaddr Startign I/O space address.
     53 * @param ioaddr Starting I/O space address.
    5454 * @param size   Size of the enabled I/O range.
    5555 *
    56  * @return 0 on success or an error code from errno.h.
     56 * @return EOK on success or an error code from errno.h.
    5757 *
    5858 */
     
    106106        task->arch.iomapver++;
    107107       
     108        return EOK;
     109}
     110
     111/** Disable I/O space range for task.
     112 *
     113 * Interrupts are disabled and task is locked.
     114 *
     115 * @param task   Task.
     116 * @param ioaddr Starting I/O space address.
     117 * @param size   Size of the enabled I/O range.
     118 *
     119 * @return EOK on success or an error code from errno.h.
     120 *
     121 */
     122int ddi_iospace_disable_arch(task_t *task, uintptr_t ioaddr, size_t size)
     123{
     124        size_t elements = ioaddr + size;
     125        if (elements > IO_PORTS)
     126                return ENOENT;
     127       
     128        if (ioaddr >= task->arch.iomap.elements)
     129                return EINVAL; 
     130
     131        if (task->arch.iomap.elements < elements)
     132                size -= elements - task->arch.iomap.elements;
     133
     134        /*
     135         * Disable the range.
     136         */
     137        bitmap_set_range(&task->arch.iomap, (size_t) ioaddr, size);
     138       
     139        /*
     140         * Increment I/O Permission bitmap generation counter.
     141         */
     142        task->arch.iomapver++;
     143       
    108144        return 0;
    109145}
Note: See TracChangeset for help on using the changeset viewer.