crash.subsystem.printk.lockless_ringbuffer module

class crash.subsystem.printk.lockless_ringbuffer.DevPrintkInfo(info: Value)[source]

Bases: object

Kernel struct dev_printk_info

device: str
subsystem: str
exception crash.subsystem.printk.lockless_ringbuffer.LogConsistencyException[source]

Bases: Exception

class crash.subsystem.printk.lockless_ringbuffer.PrbDataBlkLPos(blk_lpos: Value)[source]

Bases: object

Kernel struct prb_data_blk_pos

begin: int
next: int
class crash.subsystem.printk.lockless_ringbuffer.PrbDataBlock(dr: Value)[source]

Bases: object

Kernel struct prb_data_block

data: Value
id: int
class crash.subsystem.printk.lockless_ringbuffer.PrbDataRing(dr: Value)[source]

Bases: object

Kernel struct prb_data_ring

data: Value
get_data_block(blk_lpos: PrbDataBlkLPos) PrbDataBlock[source]

Return PrbDataBlock for the given blk_lpos

get_text(blk_lpos: PrbDataBlkLPos, _len: int) str[source]

return string stored at the given blk_lpos

lpos_mask: int
size_bits: int
class crash.subsystem.printk.lockless_ringbuffer.PrbDesc(desc: Value)[source]

Bases: object

Kernel struct prb_desc

desc_state() int[source]

Return state of the descriptor

is_finalized() bool[source]

Finalized desriptor points to a valid (deta) message

is_reusable() bool[source]

Reusable descriptor still has a valid sequence number but the data are gone.

state_var: int
sv_mask: int
sv_shift: int
text_blk_lpos: PrbDataBlkLPos
class crash.subsystem.printk.lockless_ringbuffer.PrbDescRing(dr: Value)[source]

Bases: object

Kernel struct prb_desc_ring

count_bits: int
descs: Value
get_desc(_id: int) PrbDesc[source]

Return prb_desc structure for the given id

get_idx(_id: int) int[source]

Return index to the desc ring for the given id

get_info(_id: int) PrintkInfo[source]

return printk_info structure for the given id

head_id: int
infos: Value
mask_id: int
tail_id: int
class crash.subsystem.printk.lockless_ringbuffer.PrbRingBuffer(prb: Value)[source]

Bases: object

Kernel struct prb_ring_buffer

data_ring: PrbDataRing
desc_ring: PrbDescRing
first_seq() int[source]

Get sequence number of the tail entry.

is_valid_desc(desc: PrbDesc, info: PrintkInfo, seq: int) bool[source]

Does the descritor constains consistent values?

show_log(args: Namespace) None[source]

Show the entire log

show_msg(desc: PrbDesc, info: PrintkInfo, args: Namespace) None[source]

Show the message for the gived descriptor, printk info. The output is mofified by pylog parameters.

class crash.subsystem.printk.lockless_ringbuffer.PrintkInfo(info: Value)[source]

Bases: object

Kernel struct printk_info

caller_id: int
dev_info: DevPrintkInfo
facility: int
flags: int
level: int
seq: int
text_len: int
ts_nsec: int
crash.subsystem.printk.lockless_ringbuffer.atomic_long_read(val: Value) int[source]
crash.subsystem.printk.lockless_ringbuffer.lockless_rb_show(args: Namespace) None[source]

Try to show printk log stored in the lockless ringbuffer

This type of ringbuffer has replaced the structured ring buffer in kernel-5.10.

Raises:

LogTypeException – The log is not in the lockless ringbuffer.

crash.subsystem.printk.lockless_ringbuffer.read_null_end_string(buf: Value) str[source]

Read null-terminated string from a given buffer.