• Barry Song's avatar
    scripts/gdb: document lx_current is only supported by x86 · dc958682
    Barry Song authored
    Patch series "scripts/gdb: clarify the platforms supporting lx_current and add arm64 support", v2.
    
    lx_current depends on per_cpu current_task variable which exists on x86
    only.  so it actually works on x86 only.  the 1st patch documents this
    clearly; the 2nd patch adds support for arm64.
    
    This patch (of 2):
    
    x86 is the only architecture which has per_cpu current_task:
    
      arch$ git grep current_task | grep -i per_cpu
      x86/include/asm/current.h:DECLARE_PER_CPU(struct task_struct *, current_task);
      x86/kernel/cpu/common.c:DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned =
      x86/kernel/cpu/common.c:EXPORT_PER_CPU_SYMBOL(current_task);
      x86/kernel/cpu/common.c:DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
      x86/kernel/cpu/common.c:EXPORT_PER_CPU_SYMBOL(current_task);
      x86/kernel/smpboot.c:	per_cpu(current_task, cpu) = idle;
    
    On other architectures, lx_current() will lead to a python exception:
    
      (gdb) p $lx_current().pid
      Python Exception <class 'gdb.error'> No symbol "current_task" in current context.:
      Error occurred in Python: No symbol "current_task" in current context.
    
    To avoid more people struggling and wasting time in other architectures,
    document it.
    
    Link: https://lkml.kernel.org/r/20210314203444.15188-1-song.bao.hua@hisilicon.com
    Link: https://lkml.kernel.org/r/20210314203444.15188-2-song.bao.hua@hisilicon.comSigned-off-by: default avatarBarry Song <song.bao.hua@hisilicon.com>
    Cc: Jan Kiszka <jan.kiszka@siemens.com>
    Cc: Kieran Bingham <kbingham@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    dc958682
gdb-kernel-debugging.rst 6.16 KB