コード例 #1
0
/*
 * Function irlmp_init (void)
 *
 *    Create (allocate) the main IrLMP structure
 *
 */
int __init irlmp_init(void)
{
	/* Initialize the irlmp structure. */
	irlmp = kmalloc( sizeof(struct irlmp_cb), GFP_KERNEL);
	if (irlmp == NULL)
		return -ENOMEM;
	memset(irlmp, 0, sizeof(struct irlmp_cb));
	
	irlmp->magic = LMP_MAGIC;
	spin_lock_init(&irlmp->lock);

	irlmp->clients = hashbin_new(HB_GLOBAL);
	irlmp->services = hashbin_new(HB_GLOBAL);
	irlmp->links = hashbin_new(HB_GLOBAL);
	irlmp->unconnected_lsaps = hashbin_new(HB_GLOBAL);
	irlmp->cachelog = hashbin_new(HB_GLOBAL);
	
	irlmp->free_lsap_sel = 0x10; /* Reserved 0x00-0x0f */
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
	irlmp->cache.valid = FALSE;
#endif
	strcpy(sysctl_devname, "Linux");
	
	/* Do discovery every 3 seconds */
	init_timer(&irlmp->discovery_timer);
   	irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout*HZ);

	return 0;
}
コード例 #2
0
ファイル: irsysctl.c プロジェクト: johnny/CobraDroidBeta
static int do_discovery(ctl_table *table, int write, struct file *filp,
                        void __user *buffer, size_t *lenp, loff_t *ppos)
{
    int ret;

    ret = proc_dointvec(table, write, filp, buffer, lenp, ppos);
    if (ret)
        return ret;

    if (irlmp == NULL)
        return -ENODEV;

    if (sysctl_discovery)
        irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout*HZ);
    else
        del_timer_sync(&irlmp->discovery_timer);

    return ret;
}
コード例 #3
0
/*
 * Function irlmp_init (void)
 *
 *    Create (allocate) the main IrLMP structure
 *
 */
int __init irlmp_init(void)
{
	IRDA_DEBUG(1, "%s()\n", __func__);
	/* Initialize the irlmp structure. */
	irlmp = kzalloc( sizeof(struct irlmp_cb), GFP_KERNEL);
	if (irlmp == NULL)
		return -ENOMEM;

	irlmp->magic = LMP_MAGIC;

	irlmp->clients = hashbin_new(HB_LOCK);
	irlmp->services = hashbin_new(HB_LOCK);
	irlmp->links = hashbin_new(HB_LOCK);
	irlmp->unconnected_lsaps = hashbin_new(HB_LOCK);
	irlmp->cachelog = hashbin_new(HB_NOLOCK);

	if ((irlmp->clients == NULL) ||
	    (irlmp->services == NULL) ||
	    (irlmp->links == NULL) ||
	    (irlmp->unconnected_lsaps == NULL) ||
	    (irlmp->cachelog == NULL)) {
		return -ENOMEM;
	}

	spin_lock_init(&irlmp->cachelog->hb_spinlock);

	irlmp->last_lsap_sel = 0x0f; /* Reserved 0x00-0x0f */
	strcpy(sysctl_devname, "Linux");

	init_timer(&irlmp->discovery_timer);

	/* Do discovery every 3 seconds, conditionally */
	if (sysctl_discovery)
		irlmp_start_discovery_timer(irlmp,
					    sysctl_discovery_timeout*HZ);

	return 0;
}