crash —— 将flags转换成可读的字符

简介: crash —— 将flags转换成可读的字符

将page的flags转换为可读字符串

crash> kmem -g 01fffe00000a001c
FLAGS: 1fffe00000a001c
  PAGE-FLAG       BIT  VALUE
  PG_referenced     2  0000004
  PG_uptodate       3  0000008
  PG_dirty          4  0000010
  PG_reclaim       17  0020000
  PG_unevictable   19  0080000
  PG_savepinned     4  0000010
  PG_isolated      17  0020000

此外,可以用whatis查看pageflags的定义:

crash> whatis pageflags
enum pageflags {
  PG_locked = 0
  PG_error = 1
  PG_referenced = 2
  PG_uptodate = 3
  PG_dirty = 4
  PG_lru = 5
  PG_active = 6
  PG_waiters = 7
  PG_slab = 8
  PG_owner_priv_1 = 9
  PG_arch_1 = 10
  PG_reserved = 11
  PG_private = 12
  PG_private_2 = 13
  PG_writeback = 14
  PG_head = 15
  PG_mappedtodisk = 16
  PG_reclaim = 17
  PG_swapbacked = 18
  PG_unevictable = 19
  PG_mlocked = 20
  PG_uncached = 21
  PG_hwpoison = 22
  PG_young = 23
  PG_idle = 24
  PG_workingset = 25
  __NR_PAGEFLAGS = 26
  PG_checked = 9
  PG_swapcache = 9
  PG_fscache = 13
  PG_pinned = 9
  PG_savepinned = 4
  PG_foreign = 9
  PG_slob_free = 12
  PG_double_map = 13
  PG_isolated = 17
};

上面__NR_PAGEFLAGS表示flags中前26位用于表示page的状态,所以在转换时会忽略标志位的无效位。

将vma的flags转换为可读的字符

crash> vm -f 8000875
8000875: (READ|EXEC|MAYREAD|MAYWRITE|MAYEXEC|DENYWRITE|CAN_NONLINEAR)
相关文章
|
2月前
crash —— 内核符号和地址直接相互转换
crash —— 内核符号和地址直接相互转换
C++读取单个字符操作
get() 是 istream 类的成员函数,它有多种重载形式,不过本文只介绍最简单最常用的一种: int get(); 此函数从输入流中读入一个字符,返回值就是该字符的 ASCII 码。 如果碰到输入的末尾,则返回值为 EOF。EOF 是 End of File 的缩写。istream 类中从输入流(包括文件)中读取数据的成员函数,在把输入数据都读取完后再进行读取,就会返回 EOF。 EOF 是在 iostream 类中定义的一个整型常量,值为 -1。get() 函数不会跳过空格、制表符、回车等特殊字符,所有的字符都能被读入。例如下面的程序: #include <iostr
|
11月前
|
C#
C# (File方法)对文件的操作,字节写入和读取
C# (File方法)对文件的操作,字节写入和读取
|
机器学习/深度学习 C语言
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
507 0
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
|
Linux
Linux系统编程中O_APPEND和O_TRUNC标志的使用方法。
大家好! 今天主要和大家聊一聊,open函数的的flags标志,譬如​:O_APPEND和O_TRUNC标志的使用方法。
276 1
Linux系统编程中O_APPEND和O_TRUNC标志的使用方法。
fwrite()读取长度错误
fwrite()读取长度错误
110 0
编写一个程序,如果名为Exercise12_15.txt的文件不存在,则创建该文件。使用文本I/O将随机产生的100个整数写入文件,文件中的整数由空格分开。从文件中读回数据并以升序显示数据。
编写一个程序,如果名为Exercise12_15.txt的文件不存在,则创建该文件。使用文本I/O将随机产生的100个整数写入文件,文件中的整数由空格分开。从文件中读回数据并以升序显示数据。
287 0
|
JavaScript 前端开发 PHP
C#(五)之常量、@控制符、转译符、ASCII编码,Console.Write
对C#的常量,ASCII编码、@控制符、“+”连接符、Console.WriteLine及转译字符的简单应用。
324 0
C#(五)之常量、@控制符、转译符、ASCII编码,Console.Write
|
C语言
【C 语言】文件操作 ( 使用 fread 和 fwrite 实现二进制文件的拷贝 | stat 统计文件大小 | feof 判定文件结尾 )
【C 语言】文件操作 ( 使用 fread 和 fwrite 实现二进制文件的拷贝 | stat 统计文件大小 | feof 判定文件结尾 )
326 0
【C 语言】文件操作 ( 使用 fread 和 fwrite 实现二进制文件的拷贝 | stat 统计文件大小 | feof 判定文件结尾 )
|
NoSQL C语言
printf段错误(core dump): 一个格式化输出引起的问题
printf段错误(core dump): 一个格式化输出引起的问题
516 0