7#if V8_HAS_PKU_JIT_WRITE_PROTECT 
   10#error pkey support in this file is only implemented on Linux 
   14#include <sys/syscall.h> 
   15#include <sys/utsname.h> 
   19#if V8_HAS_PKU_JIT_WRITE_PROTECT 
   21extern int pkey_alloc(
unsigned int flags, 
unsigned int access_rights) 
V8_WEAK;
 
   22extern int pkey_free(
int pkey) 
V8_WEAK;
 
   26bool KernelHasPkruFix() {
 
   33  struct utsname uname_buffer;
 
   35  int kernel, major, minor;
 
   37  if (sscanf(uname_buffer.release, 
"%d.%d.%d", &kernel, &major, &minor) != 3) {
 
   41  return kernel > 5 || (kernel == 5 && major >= 13) ||   
 
   42         (kernel == 5 && major == 4 && minor >= 182) ||  
 
   43         (kernel == 5 && major == 10 && minor >= 103);   
 
   47#ifdef PKEY_DISABLE_WRITE 
   48  if (!pkey_alloc) 
return -1;
 
   50  static bool kernel_has_pkru_fix = KernelHasPkruFix();
 
   51  if (!kernel_has_pkru_fix) 
return -1;
 
   53  return pkey_alloc(0, PKEY_DISABLE_WRITE);
 
   59int PkeyFree(
int pkey) {
 
   61  return pkey_free(pkey);
 
   71#if V8_HAS_PKU_JIT_WRITE_PROTECT 
 
   78#if V8_HAS_PKU_JIT_WRITE_PROTECT 
 
   95#if V8_HAS_PKU_JIT_WRITE_PROTECT 
 
  103#if V8_HAS_PKU_JIT_WRITE_PROTECT 
 
  111#if V8_HAS_PKU_JIT_WRITE_PROTECT 
 
#define CHECK_EQ(lhs, rhs)
 
#define DCHECK(condition)