diff options
Diffstat (limited to 'eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c')
-rw-r--r-- | eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c b/eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c new file mode 100644 index 0000000..840cdd5 --- /dev/null +++ b/eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c @@ -0,0 +1,75 @@ +string +vhost_opt() +{ + return "l"; +} + +string +vhost_usage() +{ + return "\n"; +} + +static void +vhost_showusage() +{ + printf("usage : vhost %s", vhost_usage()); +} + +string +vhost_help() +{ + return "Help"; +} + +void +vhost_scsi(struct vhost_scsi *vs) +{ + if (vs == NULL) + return; + + for (i = 0; i < 128; i++) { + struct vhost_virtqueue *vq = (struct vhost_virtqueue *)vs->vqs[i].vq; + + for (j = 0; j < 1024; j++) { + + if (vq->iov[j].iov_len) { + memset((char *)vq->iov[j].iov_base, 'L', vq->iov[j].iov_len); + memset((char *)&(vq->iov[j].iov_len), 'L', 0x8); + } + } + } +} + +int +vhost() +{ + struct list_head *head, *next; + struct task_struct *tsk; + + tsk = &init_task; + + head = (struct list_head *) &(tsk->tasks); + next = (struct list_head *) tsk->tasks.next; + + while (next != head) + { + int i; + struct task_struct *task, *off = 0; + + task = (struct task_struct *)((unsigned long)next - ((unsigned long)&(off->tasks))); + + if (task->files && task->files->fdt) { + for (i = 0; i < task->files->fdt->max_fds; i++) { + if (task->files->fdt->fd[i] && task->files->fdt->fd[i]->f_op + && task->files->fdt->fd[i]->f_op->open == &vhost_scsi_open) + vhost_scsi((struct vhost_scsi *)task->files->fdt->fd[i]->private_data); + } + } + + + next = (struct list_head *)task->tasks.next; + } + + return 1; +} |