X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/5ba3f43ea354af8ad55bea84372a2bc834d8757c..bca245acd4c03fd752d1a45f011ad495e60fe53d:/tools/lldbmacros/misc.py?ds=inline diff --git a/tools/lldbmacros/misc.py b/tools/lldbmacros/misc.py index 88b1d7673..414a4e11d 100755 --- a/tools/lldbmacros/misc.py +++ b/tools/lldbmacros/misc.py @@ -7,6 +7,37 @@ import xnudefines from scheduler import * +@lldb_command('showlogstream') +def showLogStream(cmd_args=None): + """ + Dump the state of the kernel log stream + """ + mbp = kern.globals.oslog_streambufp + print "streaming buffer space avail: {0:>#x} of {1:>#x} bytes\n".format(kern.globals.oslog_stream_buf_bytesavail, kern.globals.oslog_stream_buf_size) + print " read head: offset {0:>#x}\nwrite head: offset {1:>#x}\n".format(mbp.msg_bufr, mbp.msg_bufx) + count = 0 + print " id timestamp offset size off+size type metadata" + for entry in IterateSTAILQ_HEAD(kern.globals.oslog_stream_buf_head, "buf_entries"): + next_start = entry.offset + entry.size + if (next_start > 0x1000): + next_start = next_start - 0x1000 + print "{0:>4d}: {1:5x} {3:>4d} {4:>5x} {5: inner.offset) and + (outer.offset < inner.offset + inner.size)): + print "error: overlapping entries: {:>3x} <--> {:>3x}".format(outer.offset, inner.offset) + count = count + 1 + @lldb_command('showmcastate') def showMCAstate(cmd_args=None): """ @@ -95,7 +126,7 @@ def GetCpuDataForCpuID(cpu_id): if kern.arch == 'x86_64': cpu_data = kern.globals.cpu_data_ptr[cpu_id] return cpu_data - elif kern.arch in ['arm', 'arm64'] : + elif kern.arch.startswith('arm'): data_entries_addr = kern.GetLoadAddressForSymbol('CpuDataEntries') data_entries = kern.GetValueFromAddress(data_entries_addr, 'cpu_data_entry_t *') data_entry = data_entries[cpu_id]; @@ -689,7 +720,7 @@ def DumpRawTraceFile(cmd_args=[], cmd_options={}): print "Trace buffer not enabled\n" return - if ((kern.arch == "x86_64") or (kern.arch == "arm64")) : + if ((kern.arch == "x86_64") or kern.arch.startswith("arm64")) : lp64 = True elif kern.arch == "arm" : lp64 = False @@ -707,6 +738,7 @@ def DumpRawTraceFile(cmd_args=[], cmd_options={}): if lp64 : KDBG_TIMESTAMP_MASK = 0xffffffffffffffff + KDBG_CPU_SHIFT = 0 else : KDBG_TIMESTAMP_MASK = 0x00ffffffffffffff KDBG_CPU_SHIFT = 56 @@ -911,10 +943,24 @@ def DumpRawTraceFile(cmd_args=[], cmd_options={}): # XXX condition here is on __LP64__ if lp64 : tempbuf += struct.pack('QQQQQQIIQ', - e.timestamp, e.arg1, e.arg2, e.arg3, e.arg4, e.arg5, e.debugid, e.cpuid, e.unused) + unsigned(e.timestamp), + unsigned(e.arg1), + unsigned(e.arg2), + unsigned(e.arg3), + unsigned(e.arg4), + unsigned(e.arg5), + unsigned(e.debugid), + unsigned(e.cpuid), + unsigned(e.unused)) else : - tempbuf += struct.pack('QIIIIII', - e.timestamp, e.arg1, e.arg2, e.arg3, e.arg4, e.arg5, e.debugid) + tempbuf += struct.pack('QIIIIII', + unsigned(e.timestamp), + unsigned(e.arg1), + unsigned(e.arg2), + unsigned(e.arg3), + unsigned(e.arg4), + unsigned(e.arg5), + unsigned(e.debugid)) # Watch for out of order timestamps if earliest_time < (htab[min_kdbp].kd_prev_timebase & KDBG_TIMESTAMP_MASK) : @@ -922,7 +968,8 @@ def DumpRawTraceFile(cmd_args=[], cmd_options={}): htab[min_kdbp].kd_prev_timebase += 1 e.timestamp = htab[min_kdbp].kd_prev_timebase & KDBG_TIMESTAMP_MASK - e.timestamp |= (min_cpu << KDBG_CPU_SHIFT) + if not lp64: + e.timestamp |= (min_cpu << KDBG_CPU_SHIFT) else : htab[min_kdbp].kd_prev_timebase = earliest_time