================ @@ -0,0 +1,114 @@ +//===-- MemoryMonitor.cpp -------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "MemoryMonitor.h" +#include "llvm/ADT/ScopeExit.h" +#include <atomic> +#include <cstdio> +#include <cstring> +#include <thread> + +#if defined(__APPLE__) +#include <dispatch/dispatch.h> +#endif + +#if defined(__linux__) +#include <fcntl.h> +#include <poll.h> +#include <unistd.h> +#endif + +using namespace lldb_dap; + +#if defined(__APPLE__) +class MemoryMonitorDarwin : public MemoryMonitor { + using MemoryMonitor::MemoryMonitor; + void Start() override { + m_memory_pressure_source = dispatch_source_create( + DISPATCH_SOURCE_TYPE_MEMORYPRESSURE, + 0, // system-wide monitoring + DISPATCH_MEMORYPRESSURE_WARN | DISPATCH_MEMORYPRESSURE_CRITICAL, + dispatch_get_main_queue()); + + dispatch_source_set_event_handler(m_memory_pressure_source, ^{ + dispatch_source_memorypressure_flags_t pressureLevel = + dispatch_source_get_data(m_memory_pressure_source); + if (pressureLevel & + (DISPATCH_MEMORYPRESSURE_WARN | DISPATCH_MEMORYPRESSURE_CRITICAL)) { + m_callback(); + } + }); + } + + void Stop() override { dispatch_source_cancel(m_memory_pressure_source); } ---------------- ashgti wrote:
Do we also need to release this? I don't think we have ARC enabled in this target. https://github.com/llvm/llvm-project/pull/129332 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits