Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2082 → Rev 2083

/trunk/kernel/generic/include/mm/buddy.h
40,30 → 40,32
 
#define BUDDY_SYSTEM_INNER_BLOCK 0xff
 
struct buddy_system;
 
/** Buddy system operations to be implemented by each implementation. */
struct buddy_system_operations {
typedef struct {
/** Return pointer to left-side or right-side buddy for block passed as
* argument. */
link_t *(* find_buddy)(buddy_system_t *, link_t *);
link_t *(* find_buddy)(struct buddy_system *, link_t *);
/** Bisect the block passed as argument and return pointer to the new
* right-side buddy. */
link_t *(* bisect)(buddy_system_t *, link_t *);
link_t *(* bisect)(struct buddy_system *, link_t *);
/** Coalesce two buddies into a bigger block. */
link_t *(* coalesce)(buddy_system_t *, link_t *, link_t *);
link_t *(* coalesce)(struct buddy_system *, link_t *, link_t *);
/** Set order of block passed as argument. */
void (*set_order)(buddy_system_t *, link_t *, uint8_t);
void (*set_order)(struct buddy_system *, link_t *, uint8_t);
/** Return order of block passed as argument. */
uint8_t (*get_order)(buddy_system_t *, link_t *);
uint8_t (*get_order)(struct buddy_system *, link_t *);
/** Mark block as busy. */
void (*mark_busy)(buddy_system_t *, link_t *);
void (*mark_busy)(struct buddy_system *, link_t *);
/** Mark block as available. */
void (*mark_available)(buddy_system_t *, link_t *);
void (*mark_available)(struct buddy_system *, link_t *);
/** Find parent of block that has given order */
link_t *(* find_block)(buddy_system_t *, link_t *, uint8_t);
void (* print_id)(buddy_system_t *, link_t *);
};
link_t *(* find_block)(struct buddy_system *, link_t *, uint8_t);
void (* print_id)(struct buddy_system *, link_t *);
} buddy_system_operations_t;
 
struct buddy_system {
typedef struct buddy_system {
/** Maximal order of block which can be stored by buddy system. */
uint8_t max_order;
link_t *order;
70,7 → 72,7
buddy_system_operations_t *op;
/** Pointer to be used by the implementation. */
void *data;
};
} buddy_system_t;
 
extern void buddy_system_create(buddy_system_t *b, uint8_t max_order,
buddy_system_operations_t *op, void *data);
/trunk/kernel/generic/include/typedefs.h
49,8 → 49,6
 
typedef struct task task_t;
typedef struct thread thread_t;
typedef struct context context_t;
typedef struct fpu_context fpu_context_t;
 
typedef struct spinlock spinlock_t;
typedef struct mutex mutex_t;
61,9 → 59,6
typedef struct waitq waitq_t;
typedef struct futex futex_t;
 
typedef struct buddy_system buddy_system_t;
typedef struct buddy_system_operations buddy_system_operations_t;
 
typedef struct as_area as_area_t;
typedef struct as as_t;
 
/trunk/kernel/generic/src/mm/frame.c
424,7 → 424,7
frame->refcount = 0;
}
 
static struct buddy_system_operations zone_buddy_system_operations = {
static buddy_system_operations_t zone_buddy_system_operations = {
.find_buddy = zone_buddy_find_buddy,
.bisect = zone_buddy_bisect,
.coalesce = zone_buddy_coalesce,
/trunk/kernel/arch/sparc64/include/fpu_context.h
40,10 → 40,10
#define ARCH_HAS_FPU
#define FPU_CONTEXT_ALIGN 8
 
struct fpu_context {
typedef struct {
uint64_t d[32];
uint64_t fsr;
};
} fpu_context_t;
 
#endif
 
/trunk/kernel/arch/sparc64/include/context.h
56,7 → 56,7
* Save only registers that must be preserved across
* function calls.
*/
struct context {
typedef struct {
uintptr_t sp; /* %o6 */
uintptr_t pc; /* %o7 */
uint64_t i0;
76,7 → 76,7
uint64_t l6;
uint64_t l7;
ipl_t ipl;
};
} context_t;
 
#endif
 
/trunk/kernel/arch/ia64/include/fpu_context.h
42,9 → 42,9
 
#define FRS 96
 
struct fpu_context {
typedef struct {
__r128 fr[FRS];
};
} fpu_context_t;
 
#endif
 
/trunk/kernel/arch/ia64/include/context.h
66,7 → 66,7
* Only save registers that must be preserved across
* function calls.
*/
struct context {
typedef struct {
 
/*
* Application registers
128,7 → 128,7
__r128 f31;
ipl_t ipl;
};
} context_t;
 
#endif
 
/trunk/kernel/arch/ppc32/include/fpu_context.h
39,7 → 39,7
# include <arch/types.h>
#endif
 
struct fpu_context {
typedef struct {
uint64_t fr14;
uint64_t fr15;
uint64_t fr16;
59,7 → 59,7
uint64_t fr30;
uint64_t fr31;
uint32_t fpscr;
} __attribute__ ((packed));
} __attribute__ ((packed)) fpu_context_t;
 
#endif
 
/trunk/kernel/arch/ppc32/include/context.h
39,7 → 39,7
 
#define SP_DELTA 16
 
struct context {
typedef struct {
uintptr_t sp;
uintptr_t pc;
67,7 → 67,7
uint32_t cr;
ipl_t ipl;
} __attribute__ ((packed));
} __attribute__ ((packed)) context_t;
 
#endif
 
/trunk/kernel/arch/amd64/include/context.h
46,7 → 46,7
/* We include only registers that must be preserved
* during function call
*/
struct context {
typedef struct {
uintptr_t sp;
uintptr_t pc;
59,7 → 59,7
uint64_t r15;
 
ipl_t ipl;
} __attribute__ ((packed));
} __attribute__ ((packed)) context_t;
 
#endif
 
/trunk/kernel/arch/ppc64/include/fpu_context.h
39,7 → 39,7
# include <arch/types.h>
#endif
 
struct fpu_context {
typedef struct {
uint64_t fr14;
uint64_t fr15;
uint64_t fr16;
59,7 → 59,7
uint64_t fr30;
uint64_t fr31;
uint32_t fpscr;
} __attribute__ ((packed));
} __attribute__ ((packed)) fpu_context_t;
 
#endif
 
/trunk/kernel/arch/ppc64/include/context.h
39,7 → 39,7
 
#define SP_DELTA 16
 
struct context {
typedef struct {
uintptr_t sp;
uintptr_t pc;
67,7 → 67,7
uint64_t cr;
ipl_t ipl;
} __attribute__ ((packed));
} __attribute__ ((packed)) context_t;
 
#endif
 
/trunk/kernel/arch/mips32/include/fpu_context.h
39,10 → 39,10
 
#define FPU_CONTEXT_ALIGN sizeof(unative_t)
 
struct fpu_context {
typedef struct {
unative_t dregs[32];
unative_t cregs[32];
};
} fpu_context_t;
 
#endif
 
/trunk/kernel/arch/mips32/include/context.h
52,7 → 52,7
* Only save registers that must be preserved across
* function calls.
*/
struct context {
typedef struct {
uintptr_t sp;
uintptr_t pc;
68,7 → 68,7
uint32_t gp;
 
ipl_t ipl;
};
} context_t;
 
#endif /* __ASM__ */
 
/trunk/kernel/arch/ia32/include/fpu_context.h
44,9 → 44,9
void fpu_fsr(void);
 
 
struct fpu_context {
typedef struct {
uint8_t fpu[512]; /* FXSAVE & FXRSTOR storage area */
};
} fpu_context_t;
 
#endif
 
/trunk/kernel/arch/ia32/include/context.h
51,7 → 51,7
* Only save registers that must be preserved across
* function calls.
*/
struct context {
typedef struct {
uintptr_t sp;
uintptr_t pc;
uint32_t ebx;
59,7 → 59,7
uint32_t edi;
uint32_t ebp;
ipl_t ipl;
} __attribute__ ((packed));
} __attribute__ ((packed)) context_t;
 
#endif