cregit-Linux how code gets into the kernel

Release 4.11 arch/x86/include/asm/unwind.h

#ifndef _ASM_X86_UNWIND_H

#define _ASM_X86_UNWIND_H

#include <linux/sched.h>
#include <linux/ftrace.h>
#include <asm/ptrace.h>
#include <asm/stacktrace.h>


struct unwind_state {
	
struct stack_info stack_info;
	
unsigned long stack_mask;
	
struct task_struct *task;
	
int graph_idx;
#ifdef CONFIG_FRAME_POINTER
	

unsigned long *bp, *orig_sp;
	
struct pt_regs *regs;
#else
	
unsigned long *sp;
#endif
};

void __unwind_start(struct unwind_state *state, struct task_struct *task,
		    struct pt_regs *regs, unsigned long *first_frame);

bool unwind_next_frame(struct unwind_state *state);

unsigned long unwind_get_return_address(struct unwind_state *state);


static inline bool unwind_done(struct unwind_state *state) { return state->stack_info.type == STACK_TYPE_UNKNOWN; }

Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf21100.00%1100.00%
Total21100.00%1100.00%


static inline void unwind_start(struct unwind_state *state, struct task_struct *task, struct pt_regs *regs, unsigned long *first_frame) { first_frame = first_frame ? : get_stack_pointer(task, regs); __unwind_start(state, task, regs, first_frame); }

Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf50100.00%1100.00%
Total50100.00%1100.00%

#ifdef CONFIG_FRAME_POINTER
static inline unsigned long *unwind_get_return_address_ptr(struct unwind_state *state) { if (unwind_done(state)) return NULL; return state->regs ? &state->regs->ip : state->bp + 1; }

Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf42100.00%2100.00%
Total42100.00%2100.00%


static inline struct pt_regs *unwind_get_entry_regs(struct unwind_state *state) { if (unwind_done(state)) return NULL; return state->regs; }

Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf29100.00%1100.00%
Total29100.00%1100.00%

#else /* !CONFIG_FRAME_POINTER */
static inline unsigned long *unwind_get_return_address_ptr(struct unwind_state *state) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf17100.00%1100.00%
Total17100.00%1100.00%


static inline struct pt_regs *unwind_get_entry_regs(struct unwind_state *state) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf17100.00%1100.00%
Total17100.00%1100.00%

#endif /* CONFIG_FRAME_POINTER */ #endif /* _ASM_X86_UNWIND_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Josh Poimboeuf295100.00%4100.00%
Total295100.00%4100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.