urbit/include/f/arvo.h

57 lines
2.1 KiB
C
Raw Normal View History

2013-12-27 08:47:44 +04:00
/* include/f/arvo.h
2013-09-29 00:21:18 +04:00
**
** This file is in the public domain.
*/
/** Data structures.
**/
/* u2_cart: ovum carton.
*/
struct _u2_reck;
typedef struct _u2_cart {
u2_noun vir; // effects of ovum
u2_bean did; // cart considered for commit?
u2_bean cit; // cart committed?
2014-04-08 20:25:49 +04:00
c3_d ent_d; // entry in raft queue?
2013-09-29 00:21:18 +04:00
void (*clr_f) // ovum processing failed
(struct _u2_reck *rec_u, // system
u2_noun, // egg itself
u2_noun, // failure mode
u2_noun); // trace if any
struct _u2_cart* nex_u; // next in queue
} u2_cart;
/* u2_reck: modern arvo structure.
*/
typedef struct _u2_reck {
c3_w kno_w; // kernel stage
c3_w rno_w; // rotor index (always 0)
2014-04-08 20:25:49 +04:00
c3_d ent_d; // event counter
2013-09-29 00:21:18 +04:00
u2_noun yot; // new toy system
u2_noun now; // current time, as noun
u2_noun wen; // current time, as text
u2_noun sev_l; // instance number
u2_noun sen; // instance string
u2_noun own; // owner list
u2_noun roe; // temporary unsaved events
u2_noun key; // log key, or 0
u2_noun ken; // kernel formula (for now)
u2_noun roc; // rotor core
2013-11-08 04:34:44 +04:00
union {
struct { uint64_t a; uint64_t b; };
struct {
struct _u2_cart* egg_u; // exit of ovum queue
struct _u2_cart* geg_u; // entry of ovum queue
} ova;
};
2013-09-29 00:21:18 +04:00
} u2_reck;
/** Global variables.
**/
#define u2_Arv ((u2_reck*)u2_at_cord(u2_wire_arv_r(u2_Wire), sizeof(u2_reck)))
#define u2A u2_Arv