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