1 | //===-- lldb-types.h --------------------------------------------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef LLDB_LLDB_TYPES_H |
10 | #define LLDB_LLDB_TYPES_H |
11 | |
12 | #include "lldb/lldb-enumerations.h" |
13 | #include "lldb/lldb-forward.h" |
14 | |
15 | #include <cstdint> |
16 | |
17 | // All host systems must define: |
18 | // lldb::rwlock_t The type representing a read/write lock on the host |
19 | // lldb::process_t The type representing a process on the host |
20 | // lldb::thread_t The native thread type for spawned threads on the |
21 | // host |
22 | // lldb::file_t The type representing a file on the host |
23 | // lldb::socket_t The type representing a socket on the host |
24 | // lldb::thread_arg_t The type of the one and only thread creation |
25 | // argument for the host system |
26 | // lldb::thread_result_t The type that gets returned when a thread finishes |
27 | // lldb::thread_func_t The function prototype used to spawn a thread on the |
28 | // host system. |
29 | // lldb::pipe_t The type representing a pipe on the host |
30 | // |
31 | // Additionally, lldb defines a few macros based on these definitions: |
32 | // LLDB_INVALID_PROCESS The value of an invalid lldb::process_t |
33 | // LLDB_INVALID_HOST_THREAD The value of an invalid lldb::thread_t |
34 | // LLDB_INVALID_PIPE The value of an invalid lldb::pipe_t |
35 | |
36 | #ifdef _WIN32 |
37 | |
38 | #include <process.h> |
39 | |
40 | namespace lldb { |
41 | typedef void *rwlock_t; |
42 | typedef void *process_t; // Process type is HANDLE |
43 | typedef void *thread_t; // Host thread type |
44 | typedef void *file_t; // Host file type |
45 | typedef unsigned int __w64 socket_t; // Host socket type |
46 | typedef void *thread_arg_t; // Host thread argument type |
47 | typedef unsigned thread_result_t; // Host thread result type |
48 | typedef thread_result_t (*thread_func_t)(void *); // Host thread function type |
49 | typedef void *pipe_t; // Host pipe type is HANDLE |
50 | |
51 | #else |
52 | |
53 | #include <pthread.h> |
54 | |
55 | namespace lldb { |
56 | typedef pthread_rwlock_t rwlock_t; |
57 | typedef uint64_t process_t; // Process type is just a pid. |
58 | typedef pthread_t thread_t; // Host thread type |
59 | typedef int file_t; // Host file type |
60 | typedef int socket_t; // Host socket type |
61 | typedef void *thread_arg_t; // Host thread argument type |
62 | typedef void *thread_result_t; // Host thread result type |
63 | typedef void *(*thread_func_t)(void *); // Host thread function type |
64 | typedef int pipe_t; // Host pipe type |
65 | |
66 | #endif // _WIN32 |
67 | |
68 | #define LLDB_INVALID_PROCESS ((lldb::process_t)-1) |
69 | #define LLDB_INVALID_HOST_THREAD ((lldb::thread_t)NULL) |
70 | #define LLDB_INVALID_PIPE ((lldb::pipe_t)-1) |
71 | |
72 | typedef void (*LogOutputCallback)(const char *, void *baton); |
73 | typedef bool (*CommandOverrideCallback)(void *baton, const char **argv); |
74 | typedef bool (*ExpressionCancelCallback)(ExpressionEvaluationPhase phase, |
75 | void *baton); |
76 | |
77 | typedef void *ScriptObjectPtr; |
78 | |
79 | typedef uint64_t addr_t; |
80 | typedef uint64_t user_id_t; |
81 | typedef uint64_t pid_t; |
82 | typedef uint64_t tid_t; |
83 | typedef uint64_t offset_t; |
84 | typedef int32_t break_id_t; |
85 | typedef int32_t watch_id_t; |
86 | typedef uint32_t wp_resource_id_t; |
87 | typedef void *opaque_compiler_type_t; |
88 | typedef uint64_t queue_id_t; |
89 | typedef uint32_t cpu_id_t; // CPU core id |
90 | |
91 | } // namespace lldb |
92 | |
93 | #endif // LLDB_LLDB_TYPES_H |
94 | |