dspemu.c File Reference

#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/pci.h>
#include <linux/types.h>
#include <linux/major.h>
#include <linux/errno.h>
#include <linux/signal.h>
#include <linux/fcntl.h>
#include <linux/interrupt.h>
#include <linux/devpts_fs.h>
#include <linux/file.h>
#include <linux/console.h>
#include <linux/timer.h>
#include <linux/ctype.h>
#include <linux/kd.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/proc_fs.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/bitops.h>
#include <linux/unistd.h>
#include "dbgstuff.h"
#include "pcsim.h"

Go to the source code of this file.

Classes

struct  dspsim_thread_data

Defines

#define PCDSP_VERSION   "V0.1 (C) P.Zahl 2000"
#define __KERNEL_SYSCALLS__
#define ACKD_DSP   dspsim_td.SrvReqAck
#define REQD_DSP   dspsim_td.ReqDAck
#define TIMEOUT_TICKS   19
#define JIFFIES_SEM   2
#define MAXWAKEUPS_SEM   10
#define MAXWAKEUPS_WMBOX   10
#define MAXWAKEUPS_RMBOX   10
#define MAKE_MY_TIMEOUT_TMR(tmr)
#define SEEK_SET   0
#define SEEK_CUR   1
#define SEEK_END   2

Functions

static DECLARE_WAIT_QUEUE_HEAD (waitq)
static DECLARE_MUTEX_LOCKED (dspsimd_exited)
static void timeout (unsigned long ignore)
void mysleep (unsigned long myjiffies)
int InitEmu (struct dspsim_thread_data *dsp)
void ExitEmu (void)
void ServiceRequest (struct dspsim_thread_data *dsp)
int BoxFull (int wait)
int BoxEmpty (int wait)
int ChkBoxEmpty (int wait)
int WriteBox (unsigned long data, int wait)
int ChkBoxFull (int wait)
int ReadBox (unsigned long *data, int wait)
static loff_t pcdsp_seek (struct file *, loff_t, int)
static ssize_t pcdsp_read (struct file *, char *, size_t, loff_t *)
static ssize_t pcdsp_write (struct file *, const char *, size_t, loff_t *)
static int pcdsp_release (struct inode *, struct file *)
static int pcdsp_ioctl (struct inode *, struct file *, unsigned int, unsigned long)
int pcdsp_initialize (void)
void pcdsp_quit (void)
int init_module (void)
void cleanup_module (void)
static int dspsim_thread (void *data)
void start_dsp (struct dspsim_thread_data *dsp)
void stop_dsp (struct dspsim_thread_data *dsp)
static int pcdsp_open (struct inode *inode, struct file *f)
int pcdsp_read_proc (char *page, char **start, off_t off, int count, int *eof, void *data)

Variables

static devfs_handle_t devfs_handle = NULL
static int opened
static char * pcdsp_dprambaseptr
static int wakeups = -1
dspsim_thread_data dspsim_td
file_operations pcdsp_fops


Define Documentation

#define __KERNEL_SYSCALLS__
 

Definition at line 93 of file dspemu.c.

#define ACKD_DSP   dspsim_td.SrvReqAck
 

Definition at line 134 of file dspemu.c.

Referenced by BoxFull(), ServiceRequest(), and WriteBox().

#define JIFFIES_SEM   2
 

Definition at line 143 of file dspemu.c.

#define MAKE_MY_TIMEOUT_TMR tmr   ) 
 

Value:

struct timer_list tmr; \
  init_timer(&tmr); \
  tmr.function = timeout; \
  tmr.data = 0

Definition at line 287 of file dspemu.c.

#define MAXWAKEUPS_RMBOX   10
 

Definition at line 146 of file dspemu.c.

Referenced by BoxEmpty(), and BoxFull().

#define MAXWAKEUPS_SEM   10
 

Definition at line 144 of file dspemu.c.

#define MAXWAKEUPS_WMBOX   10
 

Definition at line 145 of file dspemu.c.

Referenced by BoxEmpty(), and BoxFull().

#define PCDSP_VERSION   "V0.1 (C) P.Zahl 2000"
 

Definition at line 41 of file dspemu.c.

Referenced by pcdsp_initialize().

#define REQD_DSP   dspsim_td.ReqDAck
 

Definition at line 135 of file dspemu.c.

Referenced by BoxEmpty(), ServiceRequest(), and WriteBox().

#define SEEK_CUR   1
 

Definition at line 403 of file dspemu.c.

Referenced by pcdsp_seek().

#define SEEK_END   2
 

Definition at line 404 of file dspemu.c.

Referenced by pcdsp_seek().

#define SEEK_SET   0
 

Definition at line 402 of file dspemu.c.

Referenced by FileCheck(), innovative_dsp_hwi_dev::innovative_dsp_hwi_dev(), nano_manipulatorControl::nano_manipulatorControl(), pcdsp_seek(), and WSxM_ImExportFile::WSxMRead().

#define TIMEOUT_TICKS   19
 

Definition at line 142 of file dspemu.c.


Function Documentation

int BoxEmpty int  wait  ) 
 

Definition at line 330 of file dspemu.c.

References FALSE, KDEBUG_L2, MAKE_MY_TIMEOUT_TMR, MAXWAKEUPS_RMBOX, MAXWAKEUPS_WMBOX, REQD_DSP, TIMEOUT_TICKS, TRUE, waitq, and wakeups.

Referenced by ChkBoxEmpty(), and WriteBox().

int BoxFull int  wait  ) 
 

Definition at line 307 of file dspemu.c.

References ACKD_DSP, FALSE, KDEBUG_L2, MAKE_MY_TIMEOUT_TMR, MAXWAKEUPS_RMBOX, MAXWAKEUPS_WMBOX, TIMEOUT_TICKS, TRUE, waitq, and wakeups.

Referenced by ChkBoxFull(), and ReadBox().

int ChkBoxEmpty int  wait  ) 
 

Definition at line 353 of file dspemu.c.

References BoxEmpty(), FALSE, and TRUE.

Referenced by pcdsp_ioctl().

int ChkBoxFull int  wait  ) 
 

Definition at line 375 of file dspemu.c.

References BoxFull(), FALSE, and TRUE.

Referenced by pcdsp_ioctl().

void cleanup_module void   ) 
 

static DECLARE_MUTEX_LOCKED dspsimd_exited   )  [static]
 

static DECLARE_WAIT_QUEUE_HEAD waitq   )  [static]
 

static int dspsim_thread void *  data  )  [static]
 

Definition at line 217 of file dspemu.c.

References dspsim_thread_data::active, KDEBUG, KDEBUG_L3, ServiceRequest(), signal_pending, and dspsim_thread_data::wq.

Referenced by start_dsp().

void ExitEmu void   ) 
 

Definition at line 196 of file dspemu.c.

Referenced by pcdsp_quit().

int init_module void   ) 
 

int InitEmu struct dspsim_thread_data dsp  ) 
 

Definition at line 195 of file dspemu.c.

Referenced by pcdsp_initialize().

void mysleep unsigned long  myjiffies  ) 
 

int pcdsp_initialize void   ) 
 

Definition at line 503 of file dspemu.c.

References dspsim_td, FALSE, InitEmu(), KDEBUG, KDEBUG_L1, opened, PCDSP_DPRAM_SIZE, pcdsp_dprambaseptr, PCDSP_VERSION, dspsim_thread_data::ReqDAck, dspsim_thread_data::SrvReqAck, start_dsp(), TRUE, and dspsim_thread_data::virtual_dpram.

static int pcdsp_ioctl struct inode *  ,
struct file *  ,
unsigned  int,
unsigned  long
[static]
 

Definition at line 459 of file dspemu.c.

References ChkBoxEmpty(), ChkBoxFull(), FALSE, KDEBUG, MODID, PCDSP_GETMODID, PCDSP_HALT, PCDSP_MBOX_EMPTY, PCDSP_MBOX_FULL, PCDSP_MBOX_READ_NOWAIT, PCDSP_MBOX_READ_WAIT, PCDSP_MBOX_WRITE_NOWAIT, PCDSP_MBOX_WRITE_WAIT, PCDSP_PUT_SPEED, PCDSP_RESET, PCDSP_RUN, ReadBox(), TRUE, and WriteBox().

static int pcdsp_open struct inode *  inode,
struct file *  f
[static]
 

Definition at line 444 of file dspemu.c.

References KDEBUG, and opened.

void pcdsp_quit void   )  [inline]
 

Definition at line 532 of file dspemu.c.

References dspsim_td, ExitEmu(), KDEBUG, stop_dsp(), and dspsim_thread_data::virtual_dpram.

static ssize_t pcdsp_read struct file *  ,
char *  ,
size_t  ,
loff_t * 
[static]
 

Definition at line 423 of file dspemu.c.

References KDEBUG_L2, PCDSP_DPRAM_SIZE, and pcdsp_dprambaseptr.

int pcdsp_read_proc char *  page,
char **  start,
off_t  off,
int  count,
int *  eof,
void *  data
 

Definition at line 543 of file dspemu.c.

References DSP_LCDBUFFER, dspsim_td, opened, and dspsim_thread_data::virtual_dpram.

static int pcdsp_release struct inode *  ,
struct file * 
[static]
 

Definition at line 452 of file dspemu.c.

References KDEBUG, and opened.

static loff_t pcdsp_seek struct file *  ,
loff_t  ,
int 
[static]
 

Definition at line 407 of file dspemu.c.

References KDEBUG, PCDSP_DPRAM_SIZE, SEEK_CUR, SEEK_END, and SEEK_SET.

static ssize_t pcdsp_write struct file *  ,
const char *  ,
size_t  ,
loff_t * 
[static]
 

Definition at line 434 of file dspemu.c.

References KDEBUG_L2, PCDSP_DPRAM_SIZE, and pcdsp_dprambaseptr.

int ReadBox unsigned long *  data,
int  wait
 

Definition at line 382 of file dspemu.c.

References BoxFull(), FALSE, and TRUE.

Referenced by pcdsp_ioctl().

void ServiceRequest struct dspsim_thread_data dsp  ) 
 

Definition at line 197 of file dspemu.c.

References ACKD_DSP, FALSE, REQD_DSP, TRUE, and dspsim_thread_data::virtual_dpram.

Referenced by dspsim_thread().

void start_dsp struct dspsim_thread_data dsp  ) 
 

Definition at line 246 of file dspemu.c.

References dspsim_thread_data::active, dspsim_thread(), KDEBUG, dspsim_thread_data::thread, and dspsim_thread_data::wq.

Referenced by pcdsp_initialize().

void stop_dsp struct dspsim_thread_data dsp  ) 
 

Definition at line 263 of file dspemu.c.

References dspsim_thread_data::active, KDEBUG, mysleep(), and dspsim_thread_data::thread.

Referenced by pcdsp_quit().

static void timeout unsigned long  ignore  )  [static]
 

Definition at line 282 of file dspemu.c.

References KDEBUG_L3, waitq, and wakeups.

int WriteBox unsigned long  data,
int  wait
 

Definition at line 360 of file dspemu.c.

References ACKD_DSP, dspsim_thread_data::active, BoxEmpty(), dspsim_td, FALSE, KDEBUG, REQD_DSP, TRUE, and dspsim_thread_data::wq.

Referenced by pcdsp_ioctl().


Variable Documentation

devfs_handle_t devfs_handle = NULL [static]
 

Definition at line 104 of file dspemu.c.

struct dspsim_thread_data dspsim_td
 

Definition at line 132 of file dspemu.c.

Referenced by pcdsp_initialize(), pcdsp_quit(), pcdsp_read_proc(), and WriteBox().

int opened [static]
 

Definition at line 106 of file dspemu.c.

char* pcdsp_dprambaseptr [static]
 

Definition at line 109 of file dspemu.c.

Referenced by pcdsp_initialize(), pcdsp_ioctl(), pcdsp_read(), and pcdsp_write().

struct file_operations pcdsp_fops
 

Initial value:

 {
  llseek:    pcdsp_seek,   
  read:    pcdsp_read,   
  write:   pcdsp_write,  
  
  
  ioctl:   pcdsp_ioctl,  
  
  open:    pcdsp_open,   
  
  release: pcdsp_release,
  
  
  
  
  
}

Definition at line 615 of file dspemu.c.

int wakeups = -1 [static]
 

Definition at line 112 of file dspemu.c.

Referenced by BoxEmpty(), BoxFull(), ChanneltronCounts(), get_dport_range(), and timeout().


Generated on Sat Apr 1 09:04:45 2006 for GXSM by  doxygen 1.4.6