124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- lldb-types.h --------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#ifndef LLDB_lldb_types_h_ 11b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#define LLDB_lldb_types_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/lldb-enumerations.h" 145f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/lldb-forward.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <assert.h> 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <pthread.h> 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <signal.h> 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdint.h> 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdbool.h> 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <unistd.h> 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// All host systems must define: 2513d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton// lldb::condition_t The native condition type (or a substitute class) for conditions on the host system. 2613d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton// lldb::mutex_t The native mutex type for mutex objects on the host system. 2713d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton// lldb::thread_t The native thread type for spawned threads on the system 2813d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton// lldb::thread_arg_t The type of the one any only thread creation argument for the host system 2913d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton// lldb::thread_result_t The return type that gets returned when a thread finishes. 3013d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton// lldb::thread_func_t The function prototype used to spawn a thread on the host system. 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// #define LLDB_INVALID_PROCESS_ID ... 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// #define LLDB_INVALID_THREAD_ID ... 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// #define LLDB_INVALID_HOST_THREAD ... 3409c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton// #define IS_VALID_LLDB_HOST_THREAD ... 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// TODO: Add a bunch of ifdefs to determine the host system and what 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// things should be defined. Currently MacOSX is being assumed by default 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// since that is what lldb was first developed for. 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // MacOSX Types 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //---------------------------------------------------------------------- 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef ::pthread_mutex_t mutex_t; 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef pthread_cond_t condition_t; 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef pthread_t thread_t; // Host thread type 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef void * thread_arg_t; // Host thread argument type 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef void * thread_result_t; // Host thread result type 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef void * (*thread_func_t)(void *); // Host thread function type 51f125250ba7bcaa2ea5ee95539a309e3fd2f8b5d7Greg Clayton typedef void (*LogOutputCallback) (const char *, void *baton); 52f125250ba7bcaa2ea5ee95539a309e3fd2f8b5d7Greg Clayton typedef bool (*CommandOverrideCallback)(void *baton, const char **argv); 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5509c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton#if defined(__MINGW32__) 5609c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton 5709c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Claytonconst lldb::thread_t lldb_invalid_host_thread_const = { NULL, 0 } ; 5809c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton#define LLDB_INVALID_HOST_THREAD (lldb_invalid_host_thread_const) 5909c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton#define IS_VALID_LLDB_HOST_THREAD(t) (!(NULL == (t).p && 0 == (t).x)) 6009c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton 6109c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton#else 6209c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_INVALID_HOST_THREAD ((lldb::thread_t)NULL) 6409c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton#define IS_VALID_LLDB_HOST_THREAD(t) ((t) != LLDB_INVALID_HOST_THREAD) 6509c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton 6609c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton#endif 6709c81efd010d1c9ac8821bad00cdfc9747fcae79Greg Clayton 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_INVALID_HOST_TIME { 0, 0 } 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 70b344843f75ef893762c93fd0a22d2d45712ce74dGreg Claytonnamespace lldb 71b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton{ 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef uint64_t addr_t; 73444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton typedef uint64_t user_id_t; 74d9919d3f46c5069eef065a27f96abc021330d5f3Greg Clayton typedef uint64_t pid_t; 75d9919d3f46c5069eef065a27f96abc021330d5f3Greg Clayton typedef uint64_t tid_t; 7636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton typedef uint64_t offset_t; 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef int32_t break_id_t; 789a3c2a58db644dc93915f938cb4c99558e41966cJohnny Chen typedef int32_t watch_id_t; 79462d4147f3bb9141bf62d904f58a623db00669dfGreg Clayton typedef void * clang_type_t; 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 83b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton#endif // LLDB_lldb_types_h_ 84