system call and debugging tools - skkunyx.skku.ac.kr/.../2018/03/syscall-and-kernel-debug.pdf ·...

23
23 1 Embedded Software Lab. 진주영 [email protected] Embedded Software Lab. Operating System System Call & Debugging Technique

Upload: others

Post on 27-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

1

Embedded Software Lab.

진주영

[email protected]

Embedded Software Lab.

Operating System

System Call & Debugging Technique

Page 2: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

2

Embedded Software Lab.

• A way for user-space programs to interact with the kernel

– System Call enables application programs in user-mode

to use functionalities in kernel

– When one calls system call,

system mode will be changed from user-mode to kernel-mode

– After the job finishes,

the mode will be back to user-mode and carry on doing jobs

which has been on hold

System Call

Page 3: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

3

Embedded Software Lab.

System Call - example

Page 4: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

4

Embedded Software Lab.

• 3 Steps for implementation of your own system call

– Define a system call

– Register the system call to SYSCALL table

– Call it in a user-level application

System Call – Practice (overview)

Page 5: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

5

Embedded Software Lab.

• cd ${KERNEL_SRC_DIR}/kernel

• vim sysjjy.c

• vim Makefile

System Call – Practice (1)

Page 6: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

6

Embedded Software Lab.

• cd ${KERNEL_SRC_DIR}/arch/x86/entry/syscalls

• vim syscall_64.tbl

System Call – Practice (2)

The name of Pre-defined System Call

The index of System Call

Page 7: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

7

Embedded Software Lab.

• cd ${KERNEL_SRC_DIR}/include/linux

• vim syscalls.h

System Call – Practice (3)

Page 8: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

8

Embedded Software Lab.

System Call – Practice (4)

Page 9: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

9

Embedded Software Lab.

• The function whose job is printing in Kernel

• The function works similarly to printf() function in C library

• This function can be called everywhere in kernel

• We can check logs, printed by printk(), by commands such as

/proc/kmsg, printk trace, dmesg

Debugging Technique – printk

/proc/kmsg dmesg

Page 10: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

10

Embedded Software Lab.

• The function shows parameters, returned values and system calls

from each command

• Usage: $ strace command

– Example1: strace ls

– Example2: strace ./application

Debugging Technique – strace

Page 11: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

11

Embedded Software Lab.

• The function is used to debug or trace the actions in kernel

– Event tracing (interrupt, scheduling, filesystem, …)

– Kernel function tracing (all kernel functions, stack usage, …)

– Latency tracing (wakeup, wakeup_rt, irqsoft, preemptoff, …)

• /sys/kernel/debug/tracing

• /sys/kernel/debug/tracing/events

Debugging Technique – ftrace

Page 12: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

12

Embedded Software Lab.

• example

Debugging Technique – ftrace

$ cat trace_pipe

Page 13: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

13

Embedded Software Lab.

• Processor: Central Processing Unit (CPU)

– ex. Pentium, Core i7

• Program: instruction set to let the computer work

• Process: executing instance of the program and

all context which is produced during executing the instance

Process

Page 14: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

14

Embedded Software Lab.

• struct task_struct

– Process Descriptor

– Represents a process and

maintains the information of a process

• Current macro

– You can get the task_struct of current process

using ‘current’ macro in kernel

– ex. printk(“%d”, current->pid);

Process in Linux

${KERNEL_SRC_DIR}/include/linux/sched.h

Page 15: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

15

Embedded Software Lab.

• Each process has its own process address space

that consists of all virtual addresses that the process is allowed to use

• The interval of virtual addresses = Memory region

Process Address Space

Page 16: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

16

Embedded Software Lab.

• Memory descriptor(struct mm_struct) includes all information

related to the process address space

• Linux implements a memory region as an object (struct vm_area_struct)

• struct mm_struct and struct vm_area_struct are defined in

${KERNEL_SRC_DIR}/include/linux/mm_types.h

Process Address Space in Linux

Page 17: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

17

Embedded Software Lab.

• Memory descriptor(struct mm_struct) includes all information

related to the process address space

Process Address Space in Linux

Page 18: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

18

Embedded Software Lab.

Process Address Space in Linux

Page 19: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

19

Embedded Software Lab.

• /proc/[pid]/maps

Process Address Space Information in Linux

※ Reference: show_map()

- ${KERNEL_SRC_DIR}/fs/proc/task_mmu.c

Memory Region 1Memory Region 2Memory Region 3

Page 20: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

20

Embedded Software Lab.

• /proc/[pid]/smaps

Process Address Space Information in Linux

※ Reference: show_smap()

- ${KERNEL_SRC_DIR}/fs/proc/task_mmu.c

Memory Region 1

Memory Region 2

Page 21: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

21

Embedded Software Lab.

• Doubly linked list is pre-defined in Linux kernel

– ${KERNEL_SRC_DIR}/include/linux/list.h

– You don’t need to implement linked list

List Head

Example)

Page 22: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

22

Embedded Software Lab.

• Doubly linked list is pre-defined in Linux kernel

– ${KERNEL_SRC_DIR}/include/linux/list.h

– You don’t need to implement linked list

List Head

Page 23: System Call and Debugging Tools - SKKUnyx.skku.ac.kr/.../2018/03/Syscall-and-Kernel-Debug.pdf · 2018-04-09 · System Call & Debugging Technique. 23 2 Embedded Software Lab. •

23

23

Embedded Software Lab.

• There are many data structure to be pre-defined in Linux kernel

Example)

– Doubly Linked List: ${KERNEL_SRC_DIR}/include/linux/list.h

– Bitmap: ${KERNEL_SRC_DIR}/include/linux/bitmap.h

– Red-Black Tree: ${KERNEL_SRC_DIR}/include/linux/rbtree.h

– Radix Tree: ${KERNEL_SRC_DIR}/include/linux/radix-tree.h

– Hash Table: ${KERNEL_SRC_DIR}/include/linux/hashtable.h

Data Structure in Linux kernel