1 #include <klibc/string.h>
2 #include <lunaix/clock.h>
3 #include <lunaix/mm/valloc.h>
4 #include <lunaix/spike.h>
5 #include <lunaix/syslog.h>
7 #include "kp_records.h"
10 kprec_create(int max_recs)
12 struct kp_records* recs = (struct kp_records*)valloc(KP_RECS_SIZE);
14 *recs = (struct kp_records){ .max_recs = max_recs,
15 .log_lvl = KLOG_DEBUG,
16 .kp_ent_wp = &recs->kp_ents.ents };
18 llist_init_head(&recs->kp_ents.ents);
24 kprecs_full(struct kp_records* recs)
26 return recs->cur_recs >= recs->max_recs;
30 kprec_put(struct kp_records* recs, int lvl, char* content, size_t len)
35 if (!kprecs_full(recs)) {
36 assert(recs->kp_ent_wp == &recs->kp_ents.ents);
38 ent = (struct kp_entry*)vzalloc(KP_ENT_SIZE);
39 llist_append(&recs->kp_ents.ents, &ent->ents);
42 recs->kp_ent_wp = recs->kp_ent_wp->next;
43 ent = container_of(recs->kp_ent_wp, struct kp_entry, ents);
46 vfree_safe(ent->content);
48 char* _content = valloc(len);
49 memcpy(_content, content, len);
52 ent->content = _content;
53 ent->time = clock_systime();