Function report |
Source Code:block\scsi_ioctl.c |
Create Date:2022-07-28 17:36:50 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:scsi_cmd_ioctl
Proto:int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mode, unsigned int cmd, void __user *arg)
Type:int
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct request_queue * | q | |
| struct gendisk * | bd_disk | |
| fmode_t | mode | |
| unsigned int | cmd | |
| void __user * | arg |
| 654 | Case cmd == Example: version 2.1.34 yields 20134 |
| 655 | err = sg_get_version(arg) |
| 656 | Break |
| 658 | err = scsi_get_idlun(q, arg) |
| 659 | Break |
| 660 | Case cmd == Used to obtain the bus number for a device |
| 661 | err = scsi_get_bus(q, arg) |
| 662 | Break |
| 663 | Case cmd == unit: jiffies (10ms on i386) |
| 664 | err = sg_set_timeout(q, arg) |
| 665 | Break |
| 666 | Case cmd == yield timeout as _return_ value |
| 667 | err = sg_get_timeout(q) |
| 668 | Break |
| 669 | Case cmd == actual size of reserved buffer |
| 670 | err = sg_get_reserved_size(q, arg) |
| 671 | Break |
| 672 | Case cmd == quest a new reserved buffer size |
| 673 | err = sg_set_reserved_size(q, arg) |
| 674 | Break |
| 675 | Case cmd == rue for emulated host adapter (ATAPI) |
| 676 | err = will always return that we are ATAPI even for a real SCSI drive, I'm not* so sure this is worth doing anything about (why would you care??) |
| 677 | Break |
| 678 | Case cmd == similar effect as write() followed by read() |
| 681 | err = get_sg_io_hdr( & hdr, arg) |
| 682 | If err Then Break |
| 688 | If put_sg_io_hdr( & hdr, arg) Then err = -EFAULT |
| 690 | Break |
| 692 | Case cmd == send a packet to the drive |
| 697 | If copy_from_user( & cgc, arg, size of cgc ) Then Break |
| 699 | timeout = clock_t_to_jiffies(timeout) |
| 701 | [i] 'S' for SCSI generic (required) = 'S' |
| 702 | [i] SCSI command length = size of cmd |
| 704 | err = 0 |
| 706 | Case data_direction == CGC_DATA_UNKNOWN |
| 708 | Break |
| 709 | Case data_direction == CGC_DATA_WRITE |
| 711 | Break |
| 712 | Case data_direction == CGC_DATA_READ |
| 714 | Break |
| 715 | Case data_direction == CGC_DATA_NONE |
| 717 | Break |
| 718 | Default |
| 721 | If err Then Break |
| 726 | If [i], [*o] points to sense_buffer memory Then [i] max length to write to sbp = sizeof(structrequest_sense) |
| 728 | [i] MAX_UINT->no timeout (unit: millisec) = Convert jiffies to milliseconds and back.* Avoid unnecessary multiplications/divisions in the* two most common HZ cases: |
| 730 | [i] SCSI command length = size of cmd |
| 736 | If [o] scsi status Then err = -EIO |
| 744 | Break |
| 750 | Case cmd == SCSI_IOCTL_SEND_COMMAND |
| 753 | If Not arg Then Break |
| 757 | Break |
| 758 | Case cmd == pendant of CDROMEJECT |
| 759 | err = blk_send_start_stop(q, bd_disk, 0x03) |
| 760 | Break |
| 761 | Case cmd == Ejects the cdrom media |
| 762 | err = blk_send_start_stop(q, bd_disk, 0x02) |
| 763 | Break |
| 764 | Default |
| 768 | Return err |
| Name | Describe |
|---|---|
| scsi_cmd_blk_ioctl | |
| bsg_ioctl |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |