/* Architecture specific copy of original instruction*/ struct arch_specific_insn { /* copy of the original instruction */
kprobe_opcode_t *insn; /* * boostable = 0: This instruction type is not boostable. * boostable = 1: This instruction has been boosted: we have * added a relative jump after the instruction copy in insn, * so no single-step and fixup are needed (unless there's * a post_handler).
*/ unsigned boostable:1; unsignedchar size; /* The size of insn */ union { unsignedchar opcode; struct { unsignedchar type;
} jcc; struct { unsignedchar type; unsignedchar asize;
} loop; struct { unsignedchar reg;
} indirect;
};
s32 rel32; /* relative offset must be s32, s16, or s8 */ void (*emulate_op)(struct kprobe *p, struct pt_regs *regs); /* Number of bytes of text poked */ int tp_len;
};
struct arch_optimized_insn { /* copy of the original instructions */
kprobe_opcode_t copied_insn[DISP32_SIZE]; /* detour code buffer */
kprobe_opcode_t *insn; /* the size of instructions copied to detour code buffer */
size_t size;
};
/* Return true (!0) if optinsn is prepared for optimization. */ staticinlineint arch_prepared_optinsn(struct arch_optimized_insn *optinsn)
{ return optinsn->size;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.