1 //===-- HostInfoNetBSD.cpp -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Host/netbsd/HostInfoNetBSD.h"
17 #include <sys/sysctl.h>
18 #include <sys/types.h>
19 #include <sys/utsname.h>
22 using namespace lldb_private;
24 llvm::VersionTuple HostInfoNetBSD::GetOSVersion() {
27 ::memset(&un, 0, sizeof(un));
29 return llvm::VersionTuple();
31 /* Accept versions like 7.99.21 and 6.1_STABLE */
32 uint32_t major, minor, update;
33 int status = ::sscanf(un.release, "%" PRIu32 ".%" PRIu32 ".%" PRIu32, &major,
37 return llvm::VersionTuple(major);
39 return llvm::VersionTuple(major, minor);
41 return llvm::VersionTuple(major, minor, update);
43 return llvm::VersionTuple();
46 bool HostInfoNetBSD::GetOSBuildString(std::string &s) {
47 int mib[2] = {CTL_KERN, KERN_OSREV};
50 size_t osrev_len = sizeof(osrev);
52 if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0) {
53 ::snprintf(osrev_str, sizeof(osrev_str), "%-10.10d", osrev);
62 bool HostInfoNetBSD::GetOSKernelDescription(std::string &s) {
65 ::memset(&un, 0, sizeof(un));
76 FileSpec HostInfoNetBSD::GetProgramFileSpec() {
77 static FileSpec g_program_filespec;
79 if (!g_program_filespec) {
80 static const int name[] = {
81 CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME,
83 char path[MAXPATHLEN];
87 if (sysctl(name, __arraycount(name), path, &len, NULL, 0) != -1) {
88 g_program_filespec.SetFile(path, FileSpec::Style::native);
91 return g_program_filespec;