blob: f05304c058d8f9700fdd8b58715f8b14c16c3087 [file] [log] [blame]
/* Copyright (c) 2009 The Regents of the University of California
* See LICENSE for details. */
#pragma once
#include <ros/memlayout.h>
#include <ros/ring_syscall.h>
#include <ros/sysevent.h>
#include <ros/arch/arch.h>
#include <ros/common.h>
#include <ros/procinfo.h>
#include <ros/event.h>
typedef struct procdata {
/*
syscall_sring_t syscallring;
char pad1[SYSCALLRINGSIZE -
sizeof(syscall_sring_t)];
*/
syscall_sring_t *syscallring;
sysevent_sring_t syseventring;
char pad2[SYSEVENTRINGSIZE
- sizeof(sysevent_sring_t)];
bool printx_on;
uint8_t pad8;
uint16_t pad16;
uint32_t pad32;
struct resource_req res_req[MAX_NUM_RESOURCES];
struct event_queue *kernel_evts[MAX_NR_EVENT];
/* Long range, would like these to be mapped in lazily, as the vcores
* are requested. Sharing MAX_NUM_CORES is a bit weird too. */
struct preempt_data vcore_preempt_data[MAX_NUM_CORES];
} procdata_t;
#define PROCDATA_NUM_PAGES ((sizeof(procdata_t)-1)/PGSIZE + 1)
/* TODO: I dislike having this not be a pointer (for kernel programming) */
#define __procdata (*(procdata_t*)UDATA)