Updating trunk VERSION from 935.0 to 936.0
[chromium-blink-merge.git] / base / linux_util.h
blob4f2808b93f5188d4318663fa6a78bb4dfac1e927
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_LINUX_UTIL_H_
6 #define BASE_LINUX_UTIL_H_
7 #pragma once
9 #include <stdint.h>
10 #include <sys/types.h>
12 #include <string>
14 #include "base/base_export.h"
16 namespace base {
18 static const char kFindInodeSwitch[] = "--find-inode";
20 // This is declared here so the crash reporter can access the memory directly
21 // in compromised context without going through the standard library.
22 BASE_EXPORT extern char g_linux_distro[];
24 // Get the Linux Distro if we can, or return "Unknown".
25 BASE_EXPORT std::string GetLinuxDistro();
27 // Set the Linux Distro string.
28 BASE_EXPORT void SetLinuxDistro(const std::string& distro);
30 // Return the inode number for the UNIX domain socket |fd|.
31 BASE_EXPORT bool FileDescriptorGetInode(ino_t* inode_out, int fd);
33 // Find the process which holds the given socket, named by inode number. If
34 // multiple processes hold the socket, this function returns false.
35 BASE_EXPORT bool FindProcessHoldingSocket(pid_t* pid_out, ino_t socket_inode);
37 // For a given process |pid|, look through all its threads and find the first
38 // thread with /proc/[pid]/task/[thread_id]/syscall whose first N bytes matches
39 // |expected_data|, where N is the length of |expected_data|.
40 // Returns the thread id or -1 on error. If |syscall_supported| is
41 // set to false the kernel does not support syscall in procfs.
42 BASE_EXPORT pid_t FindThreadIDWithSyscall(pid_t pid,
43 const std::string& expected_data,
44 bool* syscall_supported);
46 } // namespace base
48 #endif // BASE_LINUX_UTIL_H_