/kernel/trunk/generic/include/mm/frame.h |
---|
61,15 → 61,6 |
#define FRAME_NO_MEMORY 1 /* frame_alloc return status */ |
#define FRAME_ERROR 2 /* frame_alloc return status */ |
/* Return true if the interlvals overlap */ |
static inline int overlaps(__address s1,__address sz1, __address s2, __address sz2) |
{ |
__address e1 = s1+sz1; |
__address e2 = s2+sz2; |
return s1 < e2 && s2 < e1; |
} |
static inline __address PFN2ADDR(pfn_t frame) |
{ |
return (__address)(frame << FRAME_WIDTH); |
/kernel/trunk/generic/include/macros.h |
---|
39,4 → 39,15 |
#define min(a,b) ((a)<(b)?(a):(b)) |
#define max(a,b) ((a)>(b)?(a):(b)) |
/* Return true if the interlvals overlap */ |
static inline int overlaps(__address s1,size_t sz1, __address s2, size_t sz2) |
{ |
__address e1 = s1+sz1; |
__address e2 = s2+sz2; |
return s1 < e2 && s2 < e1; |
} |
/* Compute overlapping of physical addresses */ |
#define PA_overlaps(x,szx,y,szy) overlaps(KA2PA(x),szx,KA2PA(y), szy) |
#endif |
/kernel/trunk/generic/src/main/main.c |
---|
55,6 → 55,7 |
#include <arch/faddr.h> |
#include <typedefs.h> |
#include <ipc/ipc.h> |
#include <macros.h> |
#ifdef CONFIG_SMP |
#include <arch/smp/apic.h> |
116,7 → 117,7 |
count_t i; |
bool overlap = false; |
for (i = 0; i < init.cnt; i++) |
if (overlaps(stackaddr, CONFIG_STACK_SIZE, init.tasks[i].addr, init.tasks[i].size)) { |
if (PA_overlaps(stackaddr, CONFIG_STACK_SIZE, init.tasks[i].addr, init.tasks[i].size)) { |
stackaddr = ALIGN_UP(init.tasks[i].addr + init.tasks[i].size, CONFIG_STACK_SIZE); |
init.tasks[i].size = ALIGN_UP(init.tasks[i].size, CONFIG_STACK_SIZE) + CONFIG_STACK_SIZE; |
overlap = true; |
/kernel/trunk/generic/src/mm/frame.c |
---|
51,6 → 51,7 |
#include <align.h> |
#include <mm/slab.h> |
#include <bitops.h> |
#include <macros.h> |
typedef struct { |
count_t refcount; /**< tracking of shared frames */ |
/kernel/trunk/generic/src/ipc/sysipc.c |
---|
164,7 → 164,6 |
} else if (IPC_GET_METHOD(*olddata) == IPC_M_CONNECTMETO) { |
/* If the users accepted call, connect */ |
if (!IPC_GET_RETVAL(answer->data)) { |
printf("Connecting Phone %P\n",IPC_GET_ARG3(*olddata)); |
ipc_phone_connect((phone_t *)IPC_GET_ARG3(*olddata), |
&TASK->answerbox); |
} |