]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/ConnectionMachPort.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / include / lldb / Core / ConnectionMachPort.h
1 //===-- ConnectionMachPort.h --------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #if defined(__APPLE__)
10
11 #ifndef liblldb_ConnectionMachPort_h_
12 #define liblldb_ConnectionMachPort_h_
13
14 // C Includes
15 #include <mach/port.h>
16 #include <mach/kern_return.h>
17
18 // C++ Includes
19 #include <string>
20
21 // Other libraries and framework includes
22 // Project includes
23 #include "lldb/Core/Connection.h"
24
25 class ConnectionMachPort :
26     public lldb_private::Connection
27 {
28 public:
29     ConnectionMachPort ();
30
31     virtual
32     ~ConnectionMachPort ();
33
34     virtual bool
35     IsConnected () const;
36
37     virtual lldb::ConnectionStatus
38     BytesAvailable (uint32_t timeout_usec, lldb_private::Error *error_ptr);
39
40     virtual lldb::ConnectionStatus
41     Connect (const char *s, lldb_private::Error *error_ptr);
42
43     virtual lldb::ConnectionStatus
44     Disconnect (lldb_private::Error *error_ptr);
45
46     virtual size_t
47     Read (void *dst, 
48           size_t dst_len, 
49           uint32_t timeout_usec,
50           lldb::ConnectionStatus &status, 
51           lldb_private::Error *error_ptr);
52
53     virtual size_t
54     Write (const void *src, 
55            size_t src_len, 
56            lldb::ConnectionStatus &status, 
57            lldb_private::Error *error_ptr);
58
59     lldb::ConnectionStatus
60     BootstrapCheckIn (const char *port_name, 
61                       lldb_private::Error *error_ptr);
62
63     lldb::ConnectionStatus
64     BootstrapLookup (const char *port_name, 
65                      lldb_private::Error *error_ptr);
66
67     struct PayloadType
68     {
69         uint32_t command;
70         uint32_t data_length;
71         uint8_t data[32];
72     };
73     
74     kern_return_t
75     Send (const PayloadType &payload);
76     
77     kern_return_t
78     Receive (PayloadType &payload);
79     
80
81 protected:
82     mach_port_t m_task;
83     mach_port_t m_port;
84
85 private:
86     
87
88     DISALLOW_COPY_AND_ASSIGN (ConnectionMachPort);
89 };
90
91 #endif  // liblldb_ConnectionMachPort_h_
92
93 #endif // #if defined(__APPLE__)