Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(528)

Unified Diff: runtime/bin/dbg_connection_macos.cc

Issue 1497033003: - Remove the legacy debug protocol. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/dbg_connection_macos.cc
diff --git a/runtime/bin/dbg_connection_macos.cc b/runtime/bin/dbg_connection_macos.cc
deleted file mode 100644
index dd944e091a444cfb8337fd5602c457d6f9925e0b..0000000000000000000000000000000000000000
--- a/runtime/bin/dbg_connection_macos.cc
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(TARGET_OS_MACOS)
-
-#include <errno.h> // NOLINT
-#include <stdio.h> // NOLINT
-#include <stdlib.h> // NOLINT
-#include <string.h> // NOLINT
-#include <sys/event.h> // NOLINT
-#include <unistd.h> // NOLINT
-
-#include "bin/dartutils.h"
-#include "bin/dbg_connection.h"
-#include "bin/fdutils.h"
-#include "bin/log.h"
-#include "bin/socket.h"
-#include "platform/signal_blocker.h"
-#include "platform/utils.h"
-
-
-namespace dart {
-namespace bin {
-
-#define INVALID_FD -1
-
-int DebuggerConnectionImpl::kqueue_fd_ = INVALID_FD;
-int DebuggerConnectionImpl::wakeup_fds_[2] = {INVALID_FD, INVALID_FD};
-
-
-// Used by VM threads to send a message to the debugger connetion
-// handler thread.
-void DebuggerConnectionImpl::SendMessage(MessageType id) {
- ASSERT(wakeup_fds_[1] != INVALID_FD);
- struct Message msg;
- msg.msg_id = id;
- int result = FDUtils::WriteToBlocking(wakeup_fds_[1], &msg, sizeof(msg));
- if (result != sizeof(msg)) {
- if (result == -1) {
- perror("Wakeup message failure: ");
- }
- FATAL1("Wakeup message failure. Wrote %d bytes.", result);
- }
-}
-
-
-// Used by the debugger connection handler to read the messages sent
-// by the VM.
-bool DebuggerConnectionImpl::ReceiveMessage(Message* msg) {
- int total_read = 0;
- int bytes_read = 0;
- int remaining = sizeof(Message);
- uint8_t* buf = reinterpret_cast<uint8_t*>(msg);
- while (remaining > 0) {
- bytes_read =
- TEMP_FAILURE_RETRY(read(wakeup_fds_[0], buf + total_read, remaining));
- if ((bytes_read < 0) && (total_read == 0)) {
- return false;
- }
- if (bytes_read > 0) {
- total_read += bytes_read;
- remaining -= bytes_read;
- }
- }
- ASSERT(remaining >= 0);
- return remaining == 0;
-}
-
-
-void DebuggerConnectionImpl::HandleEvent(struct kevent* event) {
- intptr_t ident = event->ident;
- if (ident == DebuggerConnectionHandler::listener_fd_) {
- if (DebuggerConnectionHandler::IsConnected()) {
- FATAL("Cannot connect to more than one debugger.\n");
- }
- intptr_t fd = ServerSocket::Accept(ident);
- if (fd < 0) {
- FATAL("Accepting new debugger connection failed.\n");
- }
- FDUtils::SetBlocking(fd);
- DebuggerConnectionHandler::AcceptDbgConnection(fd);
-
- /* For now, don't poll the debugger connection.
- struct kevent ev_add;
- EV_SET(&ev_add, fd, EVFILT_READ, EV_ADD, 0, 0, NULL);
- int status =
- TEMP_FAILURE_RETRY(kevent(kqueue_fd_, &ev_add, 1, NULL, 0, NULL));
- if (status == -1) {
- const int kBufferSize = 1024;
- char error_message[kBufferSize];
- Utils::StrError(errno, error_message, kBufferSize);
- FATAL1("Failed adding debugger socket to kqueue: %s\n", error_message);
- }
- */
- } else if (ident == wakeup_fds_[0]) {
- Message msg;
- if (ReceiveMessage(&msg)) {
- Log::Print("Received sync message id %d.\n", msg.msg_id);
- }
- } else {
- Log::Print("unexpected: receiving debugger connection event.\n");
- UNIMPLEMENTED();
- }
-}
-
-
-void DebuggerConnectionImpl::Handler(uword args) {
- static const int kMaxEvents = 4;
- struct kevent events[kMaxEvents];
-
- while (1) {
- // Wait indefinitely for an event.
- int result = TEMP_FAILURE_RETRY(
- kevent(kqueue_fd_, NULL, 0, events, kMaxEvents, NULL));
- if (result == -1) {
- const int kBufferSize = 1024;
- char error_message[kBufferSize];
- Utils::StrError(errno, error_message, kBufferSize);
- FATAL1("kevent failed %s\n", error_message);
- } else {
- ASSERT(result <= kMaxEvents);
- for (int i = 0; i < result; i++) {
- HandleEvent(&events[i]);
- }
- }
- }
- Log::Print("shutting down debugger thread\n");
-}
-
-
-void DebuggerConnectionImpl::SetupPollQueue() {
- int result;
- result = NO_RETRY_EXPECTED(pipe(wakeup_fds_));
- if (result != 0) {
- FATAL1("Pipe creation failed with error %d\n", result);
- }
- FDUtils::SetNonBlocking(wakeup_fds_[0]);
-
- kqueue_fd_ = NO_RETRY_EXPECTED(kqueue());
- if (kqueue_fd_ == -1) {
- FATAL("Failed creating kqueue\n");
- }
- // Register the wakeup_fd_ with the kqueue.
- struct kevent event;
- EV_SET(&event, wakeup_fds_[0], EVFILT_READ, EV_ADD, 0, 0, NULL);
- int status = NO_RETRY_EXPECTED(kevent(kqueue_fd_, &event, 1, NULL, 0, NULL));
- if (status == -1) {
- const int kBufferSize = 1024;
- char error_message[kBufferSize];
- Utils::StrError(errno, error_message, kBufferSize);
- FATAL1("Failed adding wakeup pipe fd to kqueue: %s\n", error_message);
- }
-
- // Register the listening socket.
- EV_SET(&event, DebuggerConnectionHandler::listener_fd_,
- EVFILT_READ, EV_ADD, 0, 0, NULL);
- status = NO_RETRY_EXPECTED(kevent(kqueue_fd_, &event, 1, NULL, 0, NULL));
- if (status == -1) {
- const int kBufferSize = 1024;
- char error_message[kBufferSize];
- Utils::StrError(errno, error_message, kBufferSize);
- FATAL1("Failed adding listener socket to kqueue: %s\n", error_message);
- }
-}
-
-
-void DebuggerConnectionImpl::StartHandler(int port_number) {
- ASSERT(DebuggerConnectionHandler::listener_fd_ != -1);
- SetupPollQueue();
- int result = Thread::Start(&DebuggerConnectionImpl::Handler, 0);
- if (result != 0) {
- FATAL1("Failed to start debugger connection handler thread: %d\n", result);
- }
-}
-
-
-intptr_t DebuggerConnectionImpl::Send(intptr_t socket,
- const char* buf,
- int len) {
- return TEMP_FAILURE_RETRY(write(socket, buf, len));
-}
-
-
-intptr_t DebuggerConnectionImpl::Receive(intptr_t socket, char* buf, int len) {
- return TEMP_FAILURE_RETRY(read(socket, buf, len));
-}
-
-} // namespace bin
-} // namespace dart
-
-#endif // defined(TARGET_OS_MACOS)

Powered by Google App Engine
This is Rietveld 408576698