strace: Handle variable-width timestamps
[akaros.git] / kern / include / corealloc_fcfs.h
1 /*
2  * Copyright (c) 2015 The Regents of the University of California
3  * Valmon Leymarie <leymariv@berkeley.edu>
4  * Kevin Klues <klueska@cs.berkeley.edu>
5  * See LICENSE for details.
6  */
7
8 #pragma once
9
10 /* The core request algorithm maintains an internal array of these: the
11  * global pcore map. Note the prov_proc and alloc_proc are weak (internal)
12  * references, and should only be used as a ref source while the ksched has a
13  * valid kref. */
14 struct sched_pcore {
15         TAILQ_ENTRY(sched_pcore)   prov_next;    /* on a proc's prov list */
16         TAILQ_ENTRY(sched_pcore)   alloc_next;   /* on an alloc list (idle)*/
17         struct proc                *prov_proc;   /* who this is prov to */
18         struct proc                *alloc_proc;  /* who this is alloc to */
19 };
20 TAILQ_HEAD(sched_pcore_tailq, sched_pcore);
21
22 struct core_request_data {
23         struct sched_pcore_tailq  prov_alloc_me;      /* prov cores alloced us */
24         struct sched_pcore_tailq  prov_not_alloc_me;  /* maybe alloc to others */
25 };
26
27 static inline uint32_t spc2pcoreid(struct sched_pcore *spc)
28 {
29         extern struct sched_pcore *all_pcores;
30
31         return spc - all_pcores;
32 }
33
34 static inline struct sched_pcore *pcoreid2spc(uint32_t pcoreid)
35 {
36         extern struct sched_pcore *all_pcores;
37
38         return &all_pcores[pcoreid];
39 }
40