Beispiel #1
0
static void release_client(struct ccci_dev_client *client)
{
	chr_ctl_block_t *ctlb = (chr_ctl_block_t *)client->ctlb;
	WARN_ON(spin_is_locked(&client->lock)||list_empty(&client->dev_list));
	mutex_lock(&ctlb->chr_dev_mutex);
	list_del(&client->dev_list);
	un_register_to_logic_ch(client->md_id, client->ch_num);
	kfree(client);
	mutex_unlock(&ctlb->chr_dev_mutex);
}
static void ccmni_v2_destroy_instance(int md_id, int channel)
{
	ccmni_v2_ctl_block_t	*ctl_b = (ccmni_v2_ctl_block_t*)ccmni_ctl_block[md_id];
	ccmni_v2_instance_t		*ccmni = ctl_b->ccmni_v2_instance[channel];

	if (ccmni != NULL)
	{
		un_register_to_logic_ch(md_id, ccmni->uart_rx);
		un_register_to_logic_ch(md_id, ccmni->uart_tx_ack);
                        
		if (ccmni->shared_mem != NULL) {
			ccmni->shared_mem           = NULL;
			ccmni->shared_mem_phys_addr = 0;
		}
        
		if(ccmni->dev != NULL) {
			unregister_netdev(ccmni->dev);
		}
		tasklet_kill(&ccmni->tasklet);
		ccmni->ready = 0;
		ctl_b->ccmni_v2_instance[channel] = NULL;
	}
}
Beispiel #3
0
static void release_client(struct ccci_dev_client *client)
{
	unsigned long flags;
	struct chr_ctl_block_t *ctlb = (struct chr_ctl_block_t *) client->ctlb;
	WARN_ON(spin_is_locked(&client->lock) || list_empty(&client->dev_list));
	mutex_lock(&ctlb->chr_dev_mutex);
	if (client->ch_num == CCCI_MD_LOG_RX) {
		spin_lock_irqsave(&md_logger_lock, flags);
		md_logger_client = NULL;
		spin_unlock_irqrestore(&md_logger_lock, flags);
	}
	list_del(&client->dev_list);
	un_register_to_logic_ch(client->md_id, client->ch_num);
	kfree(client);
	mutex_unlock(&ctlb->chr_dev_mutex);
}