/usr/include/hphp/util/numa.h is in hhvm-dev 3.21.0+dfsg-2ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | /*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#ifndef incl_HPHP_UTIL_NUMA_H
#define incl_HPHP_UTIL_NUMA_H
#ifdef HAVE_NUMA
#include <atomic>
#include <vector>
#include <numa.h>
#include <stdint.h>
namespace HPHP {
extern uint32_t numa_node_set;
extern uint32_t numa_node_mask;
extern uint32_t numa_num_nodes;
extern std::atomic<uint32_t> numa_cur_node;
extern std::vector<bitmask*> node_to_cpu_mask;
extern bool use_numa;
void initNuma();
/*
* Determine the node that the next thread should run on.
*/
int next_numa_node();
/*
* The number of numa nodes in the system
*/
int num_numa_nodes();
/*
* Enable numa interleaving for the specified address range
*/
void numa_interleave(void* start, size_t size);
/*
* Allocate the specified address range on the local node
*/
void numa_local(void* start, size_t size);
/*
* Allocate the specified address range on the given node
*/
void numa_bind_to(void* start, size_t size, int node);
inline bool numa_node_allowed(int node) {
if (numa_node_set == 0) return true;
return numa_node_set & (1u << node);
}
}
#else // HAVE_NUMA undefined
namespace HPHP {
inline void initNuma() {}
inline int next_numa_node() { return 0; }
inline int num_numa_nodes() { return 1; }
inline void numa_interleave(void* start, size_t size) {}
inline void numa_local(void* start, size_t size) {}
inline void numa_bind_to(void* start, size_t size, int node) {}
inline bool numa_node_allowed(int node) { return true; }
}
#endif
#endif
|