Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

mdisk.c File Reference

#include <linux/version.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/malloc.h>
#include <linux/vmalloc.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/timer.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/hdreg.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/ctype.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/s390_ext.h>
#include <linux/blk.h>
#include "mdisk.h"

Include dependency graph for mdisk.c:

Go to the source code of this file.

Defines

#define __NO_VERSION__
#define MAJOR_NR   MDISK_MAJOR

Typedefs

typedef mdisk_Dev mdisk_Dev

Functions

static mdisk_rw_io_t mdisk_iob[MDISK_DEVS] __attribute__ ((aligned(8)))
static __inline__ int dia250 (void *iob, int cmd)
static __inline__ int dia210 (void *devchar)
static __inline__ int mdisk_term_io (mdisk_Dev *dev)
static __inline__ int mdisk_init_io (mdisk_Dev *dev, int blocksize, int offset, int size)
static __inline__ int mdisk_rw_io_clustered (mdisk_Dev *dev, mdisk_bio_t *bio_array, int length, int req, int sync)
 __initfunc (void mdisk_setup(char *str, int *ints))
static int mdisk_open (struct inode *inode, struct file *filp)
static int mdisk_release (struct inode *inode, struct file *filp)
static int mdisk_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
static __inline__ int mdisk_read_label (mdisk_Dev *dev, int i)
static __inline__ void mdisk_end_request (int nr_bhs)
void mdisk_request (void)
void do_mdisk_interrupt (struct pt_regs *regs, __u16 code)
static void do_mdisk_bh (void *data)
void mdisk_handler (int cpu, void *ds, struct pt_regs *regs)
 __initfunc (int mdisk_init(void))

Variables

char kernel_version [] = UTS_RELEASE
static int mdisk_blksizes [MDISK_DEVS]
static int mdisk_sizes [MDISK_DEVS] = { 0 }
static int mdisk_hardsects [MDISK_DEVS]
static int mdisk_maxsectors [MDISK_DEVS]
static mdisk_Dev mdisk_devices [MDISK_DEVS]
struct {
   long   vdev [MDISK_DEVS]
   long   size [MDISK_DEVS]
   long   offset [MDISK_DEVS]
   long   blksize [MDISK_DEVS]
mdisk_setup_data
static struct file_operations mdisk_fops


Define Documentation

#define __NO_VERSION__
 

Definition at line 15 of file mdisk.c.

#define MAJOR_NR   MDISK_MAJOR
 

Definition at line 43 of file mdisk.c.


Typedef Documentation

typedef struct mdisk_Dev mdisk_Dev
 


Function Documentation

static mdisk_rw_io_t mdisk_iob [MDISK_DEVS] __attribute__ (aligned(8))   )  [static]
 

__initfunc int   mdisk_init(void)  ) 
 

Definition at line 702 of file mdisk.c.

References mdisk_Dev::bio, blk_dev, blk_size, mdisk_Dev::blkmult, mdisk_Dev::blkshift, mdisk_Dev::blksize, blksize_size, ctl_set_bit, tq_struct::data, dev, mdisk_Dev::dev_status, DEVICE_REQUEST, do_mdisk_bh(), do_mdisk_interrupt(), get_irq_by_devno(), hardsect_size, i, mdisk_Dev::iob, KERN_WARNING, MAJOR_NR, max_sectors, mdisk_blksizes, MDISK_DEVS, mdisk_handler(), mdisk_hardsects, mdisk_init_io(), MDISK_MAXSECTORS, mdisk_maxsectors, MDISK_RAHEAD, mdisk_read_label(), mdisk_setup_data, mdisk_sizes, printk, rc, read_ahead, register_blkdev(), register_external_interrupt(), blk_dev_struct::request_fn, request_irq(), tq_struct::routine, mdisk_Dev::size, mdisk_Dev::tqueue, and mdisk_Dev::vdev.

Here is the call graph for this function:

__initfunc void   mdisk_setup(char *str, int *ints)  ) 
 

Definition at line 232 of file mdisk.c.

References blksize, i, isxdigit, KERN_WARNING, MDISK_DEVS, MDISK_HARDSECT, mdisk_setup_data, memset, offset, printk, simple_strtoul(), size, syntax_error(), and vdev.

Here is the call graph for this function:

static __inline__ int dia210 void *  devchar  )  [static]
 

Definition at line 133 of file mdisk.c.

References rc, and virt_to_phys.

static __inline__ int dia250 void *  iob,
int  cmd
[static]
 

Definition at line 112 of file mdisk.c.

References rc, and virt_to_phys.

static void do_mdisk_bh void *  data  )  [static]
 

Definition at line 669 of file mdisk.c.

References CURRENT, dev, io_request_lock, mdisk_end_request(), mdisk_request(), mdisk_Dev::nr_bhs, printk, spin_lock_irqsave, spin_unlock_irqrestore, mdisk_Dev::status, and x00.

Referenced by __initfunc().

Here is the call graph for this function:

void do_mdisk_interrupt struct pt_regs regs,
__u16  code
 

Definition at line 642 of file mdisk.c.

References dev, IMMEDIATE_BH, mark_bh, printk, queue_task, S390_lowcore, mdisk_Dev::status, tq_immediate, mdisk_Dev::tqueue, and x03.

Referenced by __initfunc().

static __inline__ void mdisk_end_request int  nr_bhs  )  [static]
 

Definition at line 482 of file mdisk.c.

References request::bh, bh, request::buffer, CURRENT, request::current_nr_sectors, i, and NULL.

Referenced by do_mdisk_bh(), and mdisk_request().

void mdisk_handler int  cpu,
void *  ds,
struct pt_regs regs
 

Definition at line 697 of file mdisk.c.

References KERN_ERR, and printk.

Referenced by __initfunc().

static __inline__ int mdisk_init_io mdisk_Dev dev,
int  blocksize,
int  offset,
int  size
[static]
 

Definition at line 172 of file mdisk.c.

References mdisk_init_io_t::block_size, mdisk_init_io_t::dev_nr, dia250(), mdisk_init_io_t::end_block, INIT_BIO, mdisk_Dev::iob, memset, mdisk_init_io_t::offset, rc, mdisk_init_io_t::start_block, and mdisk_Dev::vdev.

Referenced by __initfunc(), and mdisk_read_label().

Here is the call graph for this function:

static int mdisk_ioctl struct inode *  inode,
struct file filp,
unsigned int  cmd,
unsigned long  arg
[static]
 

Definition at line 322 of file mdisk.c.

References access_ok, BLKFLSBUF, BLKGETSIZE, BLKRAGET, BLKRASET, BLKRRPART, copy_to_user, dev, EACCES, EINVAL, fsync_dev(), HDIO_GETGEO, KERN_WARNING, MAJOR, MINOR, NULL, printk, put_user, rc, read_ahead, RO_IOCTLS, mdisk_Dev::size, size, VERIFY_WRITE, and xff.

Here is the call graph for this function:

static int mdisk_open struct inode *  inode,
struct file filp
[static]
 

Definition at line 287 of file mdisk.c.

References dev, ENODEV, MDISK_DEVS, mdisk_sizes, MINOR, MOD_INC_USE_COUNT, num, and mdisk_Dev::usage.

static __inline__ int mdisk_read_label mdisk_Dev dev,
int  i
[static]
 

Definition at line 405 of file mdisk.c.

References b, mdisk_Dev::bio, mdisk_bio_t::block_number, mdisk_bio_t::buffer, DEV_CLASS_FBA, mdisk_dev_char_t::dev_nr, dia210(), KERN_WARNING, label, mdisk_init_io(), MDISK_READ_REQ, mdisk_rw_io_clustered(), mdisk_setup_data, MDISK_SYNC, mdisk_term_io(), memset, printk, rc, mdisk_dev_char_t::rdc_len, mdisk_bio_t::type, vdev, mdisk_dev_char_t::vdev_class, and virt_to_phys.

Referenced by __initfunc().

Here is the call graph for this function:

static int mdisk_release struct inode *  inode,
struct file filp
[static]
 

Definition at line 303 of file mdisk.c.

References dev, fsync_dev(), MINOR, MOD_DEC_USE_COUNT, and mdisk_Dev::usage.

Here is the call graph for this function:

void mdisk_request void   ) 
 

Definition at line 515 of file mdisk.c.

References bh, mdisk_Dev::bio, mdisk_Dev::blkmult, mdisk_Dev::blkshift, mdisk_Dev::blksize, mdisk_bio_t::block_number, mdisk_bio_t::buffer, count, CURRENT, dev, DEVICE_NR, i, KERN_WARNING, MDISK_ASYNC, MDISK_DEVS, mdisk_end_request(), MDISK_READ_REQ, mdisk_rw_io_clustered(), MDISK_SYNC, MDISK_WRITE_REQ, memset, nr, mdisk_Dev::nr_bhs, offset, printk, rc, READ, rw, mdisk_Dev::size, mdisk_bio_t::type, virt_to_phys, and WRITE.

Referenced by do_mdisk_bh().

Here is the call graph for this function:

static __inline__ int mdisk_rw_io_clustered mdisk_Dev dev,
mdisk_bio_t bio_array,
int  length,
int  req,
int  sync
[static]
 

Definition at line 202 of file mdisk.c.

References mdisk_rw_io_t::bio_list, mdisk_rw_io_t::block_count, mdisk_rw_io_t::dev_nr, dia250(), mdisk_rw_io_t::flags, mdisk_rw_io_t::interrupt_params, mdisk_Dev::iob, mdisk_rw_io_t::key, rc, RW_BIO, mdisk_Dev::vdev, and virt_to_phys.

Referenced by mdisk_read_label(), and mdisk_request().

Here is the call graph for this function:

static __inline__ int mdisk_term_io mdisk_Dev dev  )  [static]
 

Definition at line 155 of file mdisk.c.

References mdisk_init_io_t::dev_nr, dia250(), mdisk_Dev::iob, memset, TERM_BIO, and mdisk_Dev::vdev.

Referenced by mdisk_read_label().

Here is the call graph for this function:


Variable Documentation

long blksize[MDISK_DEVS]
 

Definition at line 104 of file mdisk.c.

char kernel_version[] = UTS_RELEASE
 

Definition at line 18 of file mdisk.c.

int mdisk_blksizes[MDISK_DEVS] [static]
 

Definition at line 83 of file mdisk.c.

Referenced by __initfunc().

mdisk_Dev mdisk_devices[MDISK_DEVS] [static]
 

Definition at line 92 of file mdisk.c.

struct file_operations mdisk_fops [static]
 

Initial value:

 {
        NULL,          
        block_read,
        block_write,
        NULL,          
        NULL,          
        mdisk_ioctl,
        NULL,          
        mdisk_open,
        NULL,          
        mdisk_release,
        block_fsync,
        NULL,          
        NULL,          
        NULL,          
        NULL,          
}

Definition at line 381 of file mdisk.c.

int mdisk_hardsects[MDISK_DEVS] [static]
 

Definition at line 85 of file mdisk.c.

Referenced by __initfunc().

int mdisk_maxsectors[MDISK_DEVS] [static]
 

Definition at line 86 of file mdisk.c.

Referenced by __initfunc().

struct { ... } mdisk_setup_data
 

Referenced by __initfunc(), and mdisk_read_label().

int mdisk_sizes[MDISK_DEVS] = { 0 } [static]
 

Definition at line 84 of file mdisk.c.

Referenced by __initfunc(), and mdisk_open().

long offset[MDISK_DEVS]
 

Definition at line 103 of file mdisk.c.

long size[MDISK_DEVS]
 

Definition at line 102 of file mdisk.c.

long vdev[MDISK_DEVS]
 

Definition at line 101 of file mdisk.c.

Referenced by __initfunc(), and mdisk_read_label().