Esempio n. 1
0
/*ARGSUSED*/
static int
sdt_attach(dev_info_t *devi, ddi_attach_cmd_t cmd)
{
#pragma unused(cmd)
	sdt_provider_t *prov;

	if (ddi_create_minor_node(devi, "sdt", S_IFCHR,
	    0, DDI_PSEUDO, 0) == DDI_FAILURE) {
		cmn_err(CE_NOTE, "/dev/sdt couldn't create minor node");
		ddi_remove_minor_node(devi, NULL);
		return (DDI_FAILURE);
	}

	ddi_report_dev(devi);
	sdt_devi = devi;

	if (sdt_probetab_size == 0)
		sdt_probetab_size = SDT_PROBETAB_SIZE;

	sdt_probetab_mask = sdt_probetab_size - 1;
	sdt_probetab =
	    kmem_zalloc(sdt_probetab_size * sizeof (sdt_probe_t *), KM_SLEEP);
	dtrace_invop_add(sdt_invop);

	for (prov = sdt_providers; prov->sdtp_name != NULL; prov++) {
		if (dtrace_register(prov->sdtp_name, prov->sdtp_attr,
		    DTRACE_PRIV_KERNEL, NULL,
		    &sdt_pops, prov, &prov->sdtp_id) != 0) {
			cmn_err(CE_WARN, "failed to register sdt provider %s",
			    prov->sdtp_name);
		}
	}

	return (DDI_SUCCESS);
}
Esempio n. 2
0
static int
fbt_attach(dev_info_t *devi, ddi_attach_cmd_t cmd)
{
	switch (cmd) {
	case DDI_ATTACH:
		break;
	case DDI_RESUME:
		return (DDI_SUCCESS);
	default:
		return (DDI_FAILURE);
	}

	if (fbt_probetab_size == 0)
		fbt_probetab_size = FBT_PROBETAB_SIZE;

	fbt_probetab_mask = fbt_probetab_size - 1;
	fbt_probetab =
	    kmem_zalloc(fbt_probetab_size * sizeof (fbt_probe_t *), KM_SLEEP);

	dtrace_invop_add(fbt_invop);

	if (ddi_create_minor_node(devi, "fbt", S_IFCHR, 0,
	    DDI_PSEUDO, 0) == DDI_FAILURE ||
	    dtrace_register("fbt", &fbt_attr, DTRACE_PRIV_KERNEL, NULL,
	    &fbt_pops, NULL, &fbt_id) != 0) {
		fbt_cleanup(devi);
		return (DDI_FAILURE);
	}

	ddi_report_dev(devi);
	fbt_devi = devi;

	return (DDI_SUCCESS);
}
Esempio n. 3
0
int instr_init(void)
{	int	ret;
	struct proc_dir_entry *ent;

	ret = misc_register(&instr_dev);
	if (ret) {
		printk(KERN_WARNING "instr: Unable to register misc device\n");
		return ret;
		}

	/***********************************************/
	/*   Helper not presently implemented :-(      */
	/***********************************************/
	printk(KERN_WARNING "instr loaded: /dev/instr now available\n");

	if (instr_probetab_size == 0)
		instr_probetab_size = INSTR_PROBETAB_SIZE;

	instr_probetab_mask = instr_probetab_size - 1;
	instr_probetab =
	    kmem_zalloc(instr_probetab_size * sizeof (instr_probe_t *), KM_SLEEP);

	dtrace_invop_add(instr_invop);
	
	ent = create_proc_entry("dtrace/instr", 0444, NULL);
	if (ent)
		ent->proc_fops = &instr_proc_fops;

	if (dtrace_register("instr", &instr_attr, DTRACE_PRIV_KERNEL, 0,
	    &instr_pops, NULL, &instr_id)) {
		printk("Failed to register instr - insufficient privilege\n");
	}

	initted = 1;

	return 0;
}
Esempio n. 4
0
int fbt_init(void)
{	int	ret;
	struct proc_dir_entry *ent;

	ret = misc_register(&fbt_dev);
	if (ret) {
		printk(KERN_WARNING "fbt: Unable to register misc device\n");
		return ret;
		}

	/***********************************************/
	/*   Helper not presently implemented :-(      */
	/***********************************************/
	printk(KERN_WARNING "fbt loaded: /dev/fbt now available\n");

	if (fbt_probetab_size == 0)
		fbt_probetab_size = FBT_PROBETAB_SIZE;

	fbt_probetab_mask = fbt_probetab_size - 1;
	fbt_probetab =
	    kmem_zalloc(fbt_probetab_size * sizeof (fbt_probe_t *), KM_SLEEP);

	dtrace_invop_add(fbt_invop);
	
	ent = create_proc_entry("dtrace/fbt", 0444, NULL);
	if (ent)
		ent->proc_fops = &fbt_proc_fops;

	if (dtrace_register("fbt", &fbt_attr, DTRACE_PRIV_KERNEL, 0,
	    &fbt_pops, NULL, &fbt_id)) {
		printk("Failed to register fbt - insufficient priviledge\n");
	}

	initted = 1;

	return 0;
}
Esempio n. 5
0
void
fbt_init2(void)
{
	invop_loaded = TRUE;
	dtrace_invop_add(fbt_invop);
}