Run first app from ramdisk!
This commit is contained in:
@@ -45,16 +45,16 @@ bool bm_test (struct bm* bm, size_t k) {
|
||||
* Set a range of bits in a bitmap. if starting bit is out of range, we fail.
|
||||
*/
|
||||
bool bm_set_region (struct bm* bm, size_t k, size_t m) {
|
||||
if ((k >= m) || (k >= bm->nbits) || (k + m >= bm->nbits))
|
||||
if (((k + m) > bm->nbits) || (k + m) < k)
|
||||
return false;
|
||||
|
||||
for (size_t i = k; i < m; i++) {
|
||||
for (size_t i = k; i < (k + m); i++) {
|
||||
bool taken = bm_test (bm, i);
|
||||
if (taken)
|
||||
return false;
|
||||
}
|
||||
|
||||
for (size_t i = k; i < m; i++)
|
||||
for (size_t i = k; i < (k + m); i++)
|
||||
bm_set (bm, i);
|
||||
|
||||
return true;
|
||||
@@ -64,10 +64,10 @@ bool bm_set_region (struct bm* bm, size_t k, size_t m) {
|
||||
* Clear a range of bits in a bitmap. starting bit must be in range.
|
||||
*/
|
||||
void bm_clear_region (struct bm* bm, size_t k, size_t m) {
|
||||
if ((k >= m) || (k >= bm->nbits) || (k + m >= bm->nbits))
|
||||
if (((k + m) > bm->nbits) || (k + m) < k)
|
||||
return;
|
||||
|
||||
for (size_t i = k; i < m; i++)
|
||||
for (size_t i = k; i < (k + m); i++)
|
||||
bm_clear (bm, i);
|
||||
}
|
||||
|
||||
@@ -78,10 +78,10 @@ void bm_clear_region (struct bm* bm, size_t k, size_t m) {
|
||||
* useful for implementing the physical memory manager algorithm.
|
||||
*/
|
||||
bool bm_test_region (struct bm* bm, size_t k, size_t m) {
|
||||
if ((k >= m) || (k >= bm->nbits) || (k + m >= bm->nbits))
|
||||
if (((k + m) > bm->nbits) || (k + m) < k)
|
||||
return true;
|
||||
|
||||
for (size_t i = k; i < m; i++) {
|
||||
for (size_t i = k; i < (k + m); i++) {
|
||||
bool test = bm_test (bm, i);
|
||||
if (test)
|
||||
return true;
|
||||
|
||||
@@ -130,6 +130,66 @@
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define dlinklist_index_of(type, head, ele, out_idx) \
|
||||
do { \
|
||||
(out_idx) = -1; \
|
||||
int __idx = 0; \
|
||||
type __tmp = (head); \
|
||||
while (__tmp != NULL) { \
|
||||
if (__tmp == (ele)) { \
|
||||
(out_idx) = __idx; \
|
||||
break; \
|
||||
} \
|
||||
__tmp = __tmp->next; \
|
||||
__idx++; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define dlinklist_index_of_prop(type, head, propname, propvalue, out_idx) \
|
||||
do { \
|
||||
(out_idx) = -1; \
|
||||
int __idx = 0; \
|
||||
type __tmp = (head); \
|
||||
while (__tmp != NULL) { \
|
||||
if (__tmp->propname == (propvalue)) { \
|
||||
(out_idx) = __idx; \
|
||||
break; \
|
||||
} \
|
||||
__tmp = __tmp->next; \
|
||||
__idx++; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define linklist_index_of(type, head, ele, out_idx) \
|
||||
do { \
|
||||
(out_idx) = -1; \
|
||||
int __idx = 0; \
|
||||
type __tmp = (head); \
|
||||
while (__tmp != NULL) { \
|
||||
if (__tmp == (ele)) { \
|
||||
(out_idx) = __idx; \
|
||||
break; \
|
||||
} \
|
||||
__tmp = __tmp->next; \
|
||||
__idx++; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define linklist_index_of_prop(type, head, propname, propvalue, out_idx) \
|
||||
do { \
|
||||
(out_idx) = -1; \
|
||||
int __idx = 0; \
|
||||
type __tmp = (head); \
|
||||
while (__tmp != NULL) { \
|
||||
if (__tmp->propname == (propvalue)) { \
|
||||
(out_idx) = __idx; \
|
||||
break; \
|
||||
} \
|
||||
__tmp = __tmp->next; \
|
||||
__idx++; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define linklist_append(type, head, new) \
|
||||
do { \
|
||||
if ((new) != NULL) { \
|
||||
|
||||
Reference in New Issue
Block a user