patch-2.4.14 linux/drivers/media/video/cpia_pp.c
Next file: linux/drivers/media/video/cpia_usb.c
Previous file: linux/drivers/media/video/cpia.h
Back to the patch index
Back to the overall index
- Lines: 53
- Date:
Thu Oct 25 13:53:47 2001
- Orig file:
v2.4.13/linux/drivers/media/video/cpia_pp.c
- Orig date:
Fri Mar 2 11:12:10 2001
diff -u --recursive --new-file v2.4.13/linux/drivers/media/video/cpia_pp.c linux/drivers/media/video/cpia_pp.c
@@ -123,6 +123,8 @@
MODULE_AUTHOR("B. Huisman <bhuism@cs.utwente.nl> & Peter Pregler <Peter_Pregler@email.com>");
MODULE_DESCRIPTION("Parallel port driver for Vision CPiA based cameras");
+MODULE_LICENSE("GPL");
+
MODULE_PARM(parport, "1-" __MODULE_STRING(PARPORT_MAX) "s");
MODULE_PARM_DESC(parport, "'auto' or a list of parallel port numbers. Just like lp.");
#else
@@ -158,6 +160,7 @@
};
static struct cam_data *cam_list;
+static spinlock_t cam_list_lock_pp;
#ifdef _CPIA_DEBUG_
#define DEB_PORT(port) { \
@@ -582,7 +585,9 @@
kfree(cam);
return -ENXIO;
}
- ADD_TO_LIST(cam_list, cpia);
+ spin_lock( &cam_list_lock_pp );
+ cpia_add_to_list(cam_list, cpia);
+ spin_unlock( &cam_list_lock_pp );
return 0;
}
@@ -591,11 +596,12 @@
{
struct cam_data *cpia;
+ spin_lock( &cam_list_lock_pp );
for(cpia = cam_list; cpia != NULL; cpia = cpia->next) {
struct pp_cam_entry *cam = cpia->lowlevel_data;
if (cam && cam->port->number == port->number) {
- REMOVE_FROM_LIST(cpia);
-
+ cpia_remove_from_list(cpia);
+ spin_unlock( &cam_list_lock_pp );
cpia_unregister_camera(cpia);
if(cam->open_count > 0) {
@@ -660,6 +666,9 @@
LOG ("unable to register with parport\n");
return -EIO;
}
+
+ cam_list = NULL;
+ spin_lock_init( &cam_list_lock_pp );
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)