lldb-types.h revision 0b10ef61ea60e24fe7736cd98bd5fb45efe9c816
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- lldb-types.h --------------------------------------------*- C++ -*-===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef LLDB_lldb_types_h_ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLDB_lldb_types_h_ 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/lldb-enumerations.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/lldb-forward.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <assert.h> 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <pthread.h> 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <signal.h> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdint.h> 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdbool.h> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <unistd.h> 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//---------------------------------------------------------------------- 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// All host systems must define: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// lldb::condition_t The native condition type (or a substitute class) for conditions on the host system. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// lldb::mutex_t The native mutex type for mutex objects on the host system. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// lldb::thread_t The native thread type for spawned threads on the system 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// lldb::thread_arg_t The type of the one any only thread creation argument for the host system 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// lldb::thread_result_t The return type that gets returned when a thread finishes. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// lldb::thread_func_t The function prototype used to spawn a thread on the host system. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define LLDB_INVALID_PROCESS_ID ... 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define LLDB_INVALID_THREAD_ID ... 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define LLDB_INVALID_HOST_THREAD ... 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define IS_VALID_LLDB_HOST_THREAD ... 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//---------------------------------------------------------------------- 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO: Add a bunch of ifdefs to determine the host system and what 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// things should be defined. Currently MacOSX is being assumed by default 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// since that is what lldb was first developed for. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace lldb { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //---------------------------------------------------------------------- 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // MacOSX Types 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) //---------------------------------------------------------------------- 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef ::pthread_mutex_t mutex_t; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef pthread_cond_t condition_t; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef pthread_t thread_t; // Host thread type 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void * thread_arg_t; // Host thread argument type 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void * thread_result_t; // Host thread result type 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void * (*thread_func_t)(void *); // Host thread function type 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void (*LogOutputCallback) (const char *, void *baton); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*CommandOverrideCallback)(void *baton, const char **argv); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace lldb 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__MINGW32__) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const lldb::thread_t lldb_invalid_host_thread_const = { NULL, 0 } ; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLDB_INVALID_HOST_THREAD (lldb_invalid_host_thread_const) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_VALID_LLDB_HOST_THREAD(t) (!(NULL == (t).p && 0 == (t).x)) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLDB_INVALID_HOST_THREAD ((lldb::thread_t)NULL) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_VALID_LLDB_HOST_THREAD(t) ((t) != LLDB_INVALID_HOST_THREAD) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLDB_INVALID_HOST_TIME { 0, 0 } 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace lldb 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint64_t addr_t; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint64_t user_id_t; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint64_t pid_t; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint64_t tid_t; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint64_t offset_t; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef int32_t break_id_t; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef int32_t watch_id_t; 79 typedef void * clang_type_t; 80} 81 82 83#endif // LLDB_lldb_types_h_ 84