*BSD News Article 18794


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!constellation!osuunx.ucc.okstate.edu!moe.ksu.ksu.edu!vixen.cso.uiuc.edu!uwm.edu!wupost!spool.mu.edu!agate!remarque.berkeley.edu!cuccia
From: cuccia@remarque.berkeley.edu (Nick Cuccia)
Newsgroups: comp.os.386bsd.development
Subject: [NetBSD-current] patches for soundblaster driver...
Date: 25 Jul 1993 21:23:51 GMT
Organization: Bump City Brewery and Barbecue, Berkeley, CA
Lines: 163
Message-ID: <22utl7$mf6@agate.berkeley.edu>
NNTP-Posting-Host: remarque.berkeley.edu

here are the patches required for the soundblaster driver on agate
to work on NetBSD-current.

Cheers,
--Nick
 
# To unbundle, sh this file
echo sb.c.pat 1>&2
cat >sb.c.pat <<'End of sb.c.pat'
*** sb.c.orig	Sun Feb 21 10:51:49 1993
--- sb.c	Fri Jul 23 18:55:48 1993
***************
*** 267,272 ****
--- 267,280 ----
  
    /* Select handler stuff, one entry for each "device" */
+ #if defined(NetBSD)
+   /*
+    * Needed for 4.4BSD selwakeup() semantics.
+    * cuccia@talamasca.berkeley.ca.us 930721
+    */
+   struct selinfo sel_info[SB_BIGGEST_MINOR];
+ #else
    struct proc	*selects[SB_BIGGEST_MINOR];
    sbFLAG	sel_coll[SB_BIGGEST_MINOR];
+ #endif
    struct	proc *sig_proc[SB_BIGGEST_MINOR];
    int		flags[SB_BIGGEST_MINOR];	/* fcntl flags */
***************
*** 283,286 ****
--- 291,296 ----
  };
  
+ long sb0mask;
+ 
  /*
   *  Here are the dma page upper bits.  Previously hardcoded as macros in
***************
*** 453,458 ****
--- 463,472 ----
    for (i = 0; i <= SB_BIGGEST_MINOR; i++) {
  	status.sig_proc[i] = NULL;
+ #if defined(NetBSD)
+ 	status.sel_info[i].si_coll = 0;
+ #else
  	status.selects[i] = NULL;
  	status.sel_coll[i] = 0;
+ #endif
    }
  
***************
*** 500,503 ****
--- 514,524 ----
     */
    for (i = 0; i <= SB_BIGGEST_MINOR; i++) {
+ #if defined(NetBSD)
+ 	DPRINTF (("Waking up selecters..\n"));
+ 	if (status.sel_info[i].si_pid) {
+ 		selwakeup(&(status.sel_info[i]));
+ 		status.sel_info[i].si_coll = FALSE;
+ 	}
+ #else
  	if (status.selects[i]) {
  		DPRINTF (("Waking up selecters..\n"));
***************
*** 506,509 ****
--- 527,531 ----
  		status.sel_coll[i] = FALSE;
  	}
+ #endif
  
  	/*
***************
*** 545,550 ****
--- 567,577 ----
    status.flags[minor(dev)] = flags;
    status.sig_proc[minor(dev)] = NULL;
+ #if defined(NetBSD)
+   status.sel_info[minor(dev)].si_pid = NULL;
+   status.sel_info[minor(dev)].si_coll = 0;
+ #else
    status.selects[minor(dev)] = NULL;
    status.sel_coll[minor(dev)] = 0;
+ #endif
  
    switch (minor (dev)) {
***************
*** 785,788 ****
--- 812,821 ----
    }
  
+ #if defined(NetBSD)
+   if (status.sel_info[SB_DSP_NUM].si_pid)
+   	status.sel_info[SB_DSP_NUM].si_coll = TRUE;
+   else
+   	status.sel_info[SB_DSP_NUM].si_pid = curproc->p_pid;
+ #else
    if (status.selects[SB_DSP_NUM])
   	status.sel_coll[SB_DSP_NUM] = TRUE;
***************
*** 789,792 ****
--- 822,826 ----
    else
  	status.selects[SB_DSP_NUM] = curproc;
+ #endif
  
    splx (s);
***************
*** 1267,1272 ****
--- 1301,1311 ----
    if (status.dsp_in_use) return (EBUSY);
  
+ #if defined(NetBSD)
+   status.sel_info[SB_DSP_NUM].si_pid = NULL;
+   status.sel_info[SB_DSP_NUM].si_coll = FALSE;
+ #else
    status.selects[SB_DSP_NUM] = NULL;
    status.sel_coll[SB_DSP_NUM] = FALSE;
+ #endif
    status.dsp_in_use = TRUE;
  
***************
*** 1966,1971 ****
--- 2005,2015 ----
  
    status.dsp_in_use = TRUE;
+ #if defined(NetBSD)
+   status.sel_info[SB_MIDI_NUM].si_pid = NULL;
+   status.sel_info[SB_MIDI_NUM].si_coll = FALSE;
+ #else
    status.selects[SB_MIDI_NUM] = NULL;
    status.sel_coll[SB_MIDI_NUM] = FALSE;
+ #endif
  
    dsp_reset ();			/* Resets card and inits variables */
***************
*** 2006,2009 ****
--- 2050,2059 ----
  
    /* It's not ready yet, so put them on the list of procs to notify */
+ #if defined(NetBSD)
+   if (status.sel_info[SB_MIDI_NUM].si_pid)
+     status.sel_info[SB_MIDI_NUM].si_coll = TRUE;
+   else
+     status.sel_info[SB_MIDI_NUM].si_pid = curproc->p_pid;
+ #else
    if (status.selects[SB_MIDI_NUM])
      status.sel_coll[SB_MIDI_NUM] = TRUE;
***************
*** 2010,2013 ****
--- 2060,2064 ----
    else
      status.selects[SB_MIDI_NUM] = curproc;
+ #endif
    
    splx (s);
End of sb.c.pat
exit 0
-- 
===============================================================================
 Nick Cuccia
 cuccia@remarque.berkeley.edu
-------------------------------------------------------------------------------