Example #1
0
/**
 * handles device removal event
 *
 * @param context pointer to the client context (smschar parameters block)
 *
 */
static void smschar_onremove(void *context)
{
	struct smschar_device_t *dev = (struct smschar_device_t *)context;

	smschar_unregister_client(dev);
	dev->coredev = NULL;
}
Example #2
0
/**
 * unregisters client associated with the node
 *
 * @param inode Inode concerned.
 * @param file File concerned.
 *
 */
static int smschar_release(struct inode *inode, struct file *file)
{
	smschar_unregister_client(file->private_data);

	sms_info("exiting");

	return 0;
}
/**
 * unregisters client associated with the node
 *
 * @param inode Inode concerned.
 * @param file File concerned.
 *
 */
static int smschar_release(struct inode *inode, struct file *file)
{
	struct smschar_device_t *dev = file->private_data;
	sms_info("entering, %d\n", g_open_count);

	smschar_unregister_client(file->private_data);

	if(!(--g_open_count)&& (g_open_first==0))
	{
		smscore_reset_device_drvs(dev->coredev);
		smsspi_off();
		g_open_first=0;
		sms_info("Released last time");
	}

	sms_info("exiting");
	return 0;
}