static int skel_flush(struct file *file, fl_owner_t id)
{
struct usb_skel *dev;
int res;
dev = (struct usb_skel *)file->private_data;
if (dev == NULL)
return -ENODEV;
/* wait for io to stop */ **等待IO 停止
mutex_lock(&dev->io_mutex); **自旋锁 等待获得锁 就是在等待IO停止
skel_draw_down(dev); ** 获得 锁 ,不知道 这是 做什么 的 ????
/* read out errors, leave subsequent opens a clean slate */
spin_lock_irq(&dev->err_lock);
res = dev->errors ? (dev->errors == -EPIPE ? -EPIPE : -EIO) : 0;
dev->errors = 0;
spin_unlock_irq(&dev->err_lock);
mutex_unlock(&dev->io_mutex);
return res;
}
usb-skeleton.c 之 10---skel_flush
最新推荐文章于 2024-04-16 15:42:07 发布