Changeset a35b458 in mainline for kernel/genarch/src/ddi/ddi-bitmap.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/ddi/ddi-bitmap.c
r3061bc1 ra35b458 62 62 if (elements > IO_PORTS) 63 63 return ENOENT; 64 64 65 65 if (task->arch.iomap.elements < elements) { 66 66 /* 67 67 * The I/O permission bitmap is too small and needs to be grown. 68 68 */ 69 69 70 70 void *store = malloc(bitmap_size(elements), FRAME_ATOMIC); 71 71 if (!store) 72 72 return ENOMEM; 73 73 74 74 bitmap_t oldiomap; 75 75 bitmap_initialize(&oldiomap, task->arch.iomap.elements, 76 76 task->arch.iomap.bits); 77 77 78 78 bitmap_initialize(&task->arch.iomap, elements, store); 79 79 80 80 /* 81 81 * Mark the new range inaccessible. … … 83 83 bitmap_set_range(&task->arch.iomap, oldiomap.elements, 84 84 elements - oldiomap.elements); 85 85 86 86 /* 87 87 * In case there really existed smaller iomap, … … 91 91 bitmap_copy(&task->arch.iomap, &oldiomap, 92 92 oldiomap.elements); 93 93 94 94 free(oldiomap.bits); 95 95 } 96 96 } 97 97 98 98 /* 99 99 * Enable the range and we are done. 100 100 */ 101 101 bitmap_clear_range(&task->arch.iomap, (size_t) ioaddr, size); 102 102 103 103 /* 104 104 * Increment I/O Permission bitmap generation counter. 105 105 */ 106 106 task->arch.iomapver++; 107 107 108 108 return EOK; 109 109 } … … 125 125 if (elements > IO_PORTS) 126 126 return ENOENT; 127 127 128 128 if (ioaddr >= task->arch.iomap.elements) 129 129 return EINVAL; … … 136 136 */ 137 137 bitmap_set_range(&task->arch.iomap, (size_t) ioaddr, size); 138 138 139 139 /* 140 140 * Increment I/O Permission bitmap generation counter. 141 141 */ 142 142 task->arch.iomapver++; 143 143 144 144 return 0; 145 145 }
Note:
See TracChangeset
for help on using the changeset viewer.