mirror of
https://github.com/python/cpython.git
synced 2026-01-04 14:32:21 +00:00
47 lines
1,006 B
C
47 lines
1,006 B
C
#ifndef Py_INTERNAL_MMAP_H
|
|
#define Py_INTERNAL_MMAP_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
#include "pycore_pystate.h"
|
|
|
|
#if defined(HAVE_PR_SET_VMA_ANON_NAME) && defined(__linux__)
|
|
# include <linux/prctl.h>
|
|
# include <sys/prctl.h>
|
|
#endif
|
|
|
|
#if defined(HAVE_PR_SET_VMA_ANON_NAME) && defined(__linux__)
|
|
static inline int
|
|
_PyAnnotateMemoryMap(void *addr, size_t size, const char *name)
|
|
{
|
|
#ifndef Py_DEBUG
|
|
if (!_Py_GetConfig()->dev_mode) {
|
|
return 0;
|
|
}
|
|
#endif
|
|
// The name length cannot exceed 80 (including the '\0').
|
|
assert(strlen(name) < 80);
|
|
int res = prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, (unsigned long)addr, size, name);
|
|
if (res < 0) {
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
#else
|
|
static inline int
|
|
_PyAnnotateMemoryMap(void *Py_UNUSED(addr), size_t Py_UNUSED(size), const char *Py_UNUSED(name))
|
|
{
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // !Py_INTERNAL_MMAP_H
|