1/** 2 * \file 3 * \brief Architecture specific dispatcher structure private to the user 4 */ 5 6/* 7 * Copyright (c) 2010, 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_64_BARRELFISH_DISPATCHER_H 16#define TARGET_X86_64_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_64 { 24 struct dispatcher_shared_x86_64 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 /// Dummy segment to which disp_seg_selector refers; see ldt_init_disabled() 29 uintptr_t dummyseg[2]; 30 31 /* Incoming LMP endpoints (buffers and receive cap pointers) follow */ 32}; 33 34static inline struct dispatcher_generic* 35get_dispatcher_generic_x86_64(dispatcher_handle_t handle) 36{ 37 struct dispatcher_x86_64 *disp = (struct dispatcher_x86_64*)handle; 38 return &disp->generic; 39} 40 41static inline struct dispatcher_x86_64 * 42get_dispatcher_x86_64(dispatcher_handle_t handle) 43{ 44 return (struct dispatcher_x86_64*)handle; 45} 46 47#endif // TARGET_X86_64_BARRELFISH_DISPATCHER_H 48