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