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
40namespace lldb {
41typedef void *rwlock_t;
42typedef void *process_t; // Process type is HANDLE
43typedef void *thread_t; // Host thread type
44typedef void *file_t; // Host file type
45typedef unsigned int __w64 socket_t; // Host socket type
46typedef void *thread_arg_t; // Host thread argument type
47typedef unsigned thread_result_t; // Host thread result type
48typedef thread_result_t (*thread_func_t)(void *); // Host thread function type
49typedef void *pipe_t; // Host pipe type is HANDLE
50
51#else
52
53#include <pthread.h>
54
55namespace lldb {
56typedef pthread_rwlock_t rwlock_t;
57typedef uint64_t process_t; // Process type is just a pid.
58typedef pthread_t thread_t; // Host thread type
59typedef int file_t; // Host file type
60typedef int socket_t; // Host socket type
61typedef void *thread_arg_t; // Host thread argument type
62typedef void *thread_result_t; // Host thread result type
63typedef void *(*thread_func_t)(void *); // Host thread function type
64typedef 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
72typedef void (*LogOutputCallback)(const char *, void *baton);
73typedef bool (*CommandOverrideCallback)(void *baton, const char **argv);
74typedef bool (*ExpressionCancelCallback)(ExpressionEvaluationPhase phase,
75 void *baton);
76
77typedef void *ScriptObjectPtr;
78
79typedef uint64_t addr_t;
80typedef uint64_t user_id_t;
81typedef uint64_t pid_t;
82typedef uint64_t tid_t;
83typedef uint64_t offset_t;
84typedef int32_t break_id_t;
85typedef int32_t watch_id_t;
86typedef uint32_t wp_resource_id_t;
87typedef void *opaque_compiler_type_t;
88typedef uint64_t queue_id_t;
89typedef uint32_t cpu_id_t; // CPU core id
90
91} // namespace lldb
92
93#endif // LLDB_LLDB_TYPES_H
94

source code of lldb/include/lldb/lldb-types.h