1/**
2 * \file
3 * \brief Architecture specific dispatcher structure private to the user
4 */
5
6/*
7 * Copyright (c) 2010, 2011, ETH Zurich.
8 * All rights reserved.
9 *
10 * This file is distributed under the terms in the attached LICENSE file.
11 * If you do not find this file, copies can be found by writing to:
12 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
13 */
14
15#ifndef TARGET_X86_32_BARRELFISH_DISPATCHER_H
16#define TARGET_X86_32_BARRELFISH_DISPATCHER_H
17
18#include <barrelfish_kpi/dispatcher_shared.h>
19#include <barrelfish_kpi/dispatcher_shared_arch.h>
20#include <barrelfish/dispatcher.h>
21
22/// Dispatcher structure (including data accessed only by user code)
23struct dispatcher_x86_32 {
24    struct dispatcher_shared_x86_32 d;  ///< Shared (user/kernel) data. Must be first.
25    struct dispatcher_generic generic;  ///< User private data
26
27    uint16_t disp_seg_selector;         ///< Dispatcher segment selector
28
29    /* Incoming IDC endpoints (buffers and receive cap pointers) follow */
30};
31
32static inline struct dispatcher_generic*
33get_dispatcher_generic_x86_32(dispatcher_handle_t handle)
34{
35    struct dispatcher_x86_32 *disp = (struct dispatcher_x86_32*)handle;
36    return &disp->generic;
37}
38
39static inline struct dispatcher_x86_32 *
40get_dispatcher_x86_32(dispatcher_handle_t handle)
41{
42    return (struct dispatcher_x86_32*)handle;
43}
44
45#endif // TARGET_X86_32_BARRELFISH_DISPATCHER_H
46