X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f6ab9c9ababa2cf6e5c723b83ffb9362094054e8..92f7ad8ed12975c672869242959c55896d224183:/lunaix-os/includes/lunaix/mm/cake.h diff --git a/lunaix-os/includes/lunaix/mm/cake.h b/lunaix-os/includes/lunaix/mm/cake.h index e05a6b2..cf1c16e 100644 --- a/lunaix-os/includes/lunaix/mm/cake.h +++ b/lunaix-os/includes/lunaix/mm/cake.h @@ -2,6 +2,7 @@ #define __LUNAIX_CAKE_H #include +#include #define PILE_NAME_MAXLEN 20 @@ -23,7 +24,7 @@ struct cake_pile u32_t alloced_pieces; u32_t pieces_per_cake; u32_t pg_per_cake; - char pile_name[PILE_NAME_MAXLEN]; + char pile_name[PILE_NAME_MAXLEN+1]; pile_cb ctor; }; @@ -87,4 +88,13 @@ cake_export(); void cake_ctor_zeroing(struct cake_pile* pile, void* piece); +#define DEADCAKE_MARK 0xdeadcafeUL + +static inline void +cake_ensure_valid(void* area) { + if (unlikely(*(unsigned int*)area == DEADCAKE_MARK)) { + fail("access to freed cake piece"); + } +} + #endif /* __LUNAIX_VALLOC_H */