Ejemplo n.º 1
0
static void
fbt_provide_function(struct modctl *mp, par_module_t *pmp,
	char *modname, char *name, uint8_t *st_value,
	uint8_t *instr, uint8_t *limit, int symndx)
{
	pf_info_t	inf;
int io_prov_sdt(pf_info_t *infp, uint8_t *instr, int size, int modrm);

	/***********************************************/
	/*   Ignore  these - they tend to result in a  */
	/*   lot  of dups, and also tend to be in the  */
	/*   same reusable and unmapped page.	       */
	/***********************************************/
	if (strncmp(name, "cleanup_module", 14) == 0)
		return;

	memset(&inf, 0, sizeof inf);
	inf.mp = mp;
	inf.pmp = pmp;
	inf.modname = modname;
	inf.name = name;
	inf.symndx = symndx;
	inf.st_value = st_value;
	inf.do_print = FALSE;

	inf.func_entry = fbt_prov_entry;
	inf.func_return = fbt_prov_return;
	inf.func_sdt = io_prov_sdt;

	dtrace_parse_function(&inf, instr, limit);
}
Ejemplo n.º 2
0
static void
io_prov_create(char *func, char *name, int flags)
{
	pf_info_t	inf;
	uint8_t		*start;
	int		size;

	if (dtrace_function_size(func, &start, &size) == 0) {
		printk("sdt_linux: cannot locate %s\n", func);
		return;
	}

	memset(&inf, 0, sizeof inf);
	inf.modname = "io";
	inf.func = func;
	inf.name = name;
	inf.name2 = "done";

	inf.func_entry = io_prov_entry;
	inf.func_return = io_prov_return;
	inf.flags = flags;

	dtrace_parse_function(&inf, start, start + size);

}
Ejemplo n.º 3
0
static void
fbt_provide_function(struct modctl *mp, par_module_t *pmp,
	char *modname, char *name, uint8_t *st_value,
	uint8_t *instr, uint8_t *limit, int symndx)
{
	pf_info_t	inf;
int io_prov_sdt(pf_info_t *infp, uint8_t *instr, int size, int modrm);

	memset(&inf, 0, sizeof inf);
	inf.mp = mp;
	inf.pmp = pmp;
	inf.modname = modname;
	inf.name = name;
	inf.symndx = symndx;
	inf.st_value = st_value;
	inf.do_print = FALSE;

	inf.func_entry = fbt_prov_entry;
	inf.func_return = fbt_prov_return;
	inf.func_sdt = io_prov_sdt;

	dtrace_parse_function(&inf, instr, limit);
}