aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/bktr
diff options
context:
space:
mode:
authorJacques Vidrine <nectar@FreeBSD.org>2003-08-26 16:57:24 +0000
committerJacques Vidrine <nectar@FreeBSD.org>2003-08-26 16:57:24 +0000
commit1855be730c84e67a4606b90f7e6f7017548a05e6 (patch)
tree6c9cbb82fd2629bf45e321a40d34235ffbdf39da /sys/dev/bktr
parent09a759d34728a8820a0c50bb391fd29b0ecb4021 (diff)
Notes
Diffstat (limited to 'sys/dev/bktr')
-rw-r--r--sys/dev/bktr/bktr_core.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/sys/dev/bktr/bktr_core.c b/sys/dev/bktr/bktr_core.c
index 2ca72c8450eb2..19795a2a8ec13 100644
--- a/sys/dev/bktr/bktr_core.c
+++ b/sys/dev/bktr/bktr_core.c
@@ -915,10 +915,9 @@ common_bktr_intr( void *arg )
* let them know the frame is complete.
*/
- if (bktr->proc && !(bktr->signal & METEOR_SIG_MODE_MASK)) {
+ if (bktr->proc != NULL) {
PROC_LOCK(bktr->proc);
- psignal( bktr->proc,
- bktr->signal&(~METEOR_SIG_MODE_MASK) );
+ psignal( bktr->proc, bktr->signal);
PROC_UNLOCK(bktr->proc);
}
@@ -1299,6 +1298,7 @@ video_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct thr
struct bktr_capture_area *cap_area;
vm_offset_t buf;
int i;
+ int sig;
char char_temp;
switch ( cmd ) {
@@ -1570,12 +1570,16 @@ video_ioctl( bktr_ptr_t bktr, int unit, ioctl_cmd_t cmd, caddr_t arg, struct thr
break;
case METEORSSIGNAL:
- if(*(int *)arg <= 0 || *(int *)arg > _SIG_MAXSIG) {
- return( EINVAL );
- break;
- }
- bktr->signal = *(int *) arg;
- bktr->proc = td->td_proc;
+ sig = *(int *)arg;
+ /* Historically, applications used METEOR_SIG_MODE_MASK
+ * to reset signal delivery.
+ */
+ if (sig == METEOR_SIG_MODE_MASK)
+ sig = 0;
+ if (sig < 0 || sig > _SIG_MAXSIG)
+ return (EINVAL);
+ bktr->signal = sig;
+ bktr->proc = sig ? td->td_proc : NULL;
break;
case METEORGSIGNAL: