+ dst->io_ticks = cpu_to_le32(src->io_ticks);
+ dst->time_in_queue = cpu_to_le32(src->time_in_queue);
+ dst->msec = cpu_to_le64(src->msec);
+}
+
+void fio_server_send_du(void)
+{
+ struct disk_util *du;
+ struct flist_head *entry;
+ struct cmd_du_pdu pdu;
+
+ dprint(FD_NET, "server: sending disk_util %d\n", !flist_empty(&disk_list));
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ flist_for_each(entry, &disk_list) {
+ du = flist_entry(entry, struct disk_util, list);
+
+ convert_dus(&pdu.dus, &du->dus);
+ convert_agg(&pdu.agg, &du->agg);
+
+ fio_net_send_cmd(server_fd, FIO_NET_CMD_DU, &pdu, sizeof(pdu), 0);
+ }
+}
+
+void fio_server_send_add_job(struct thread_options *o, const char *ioengine)
+{
+ struct cmd_add_job_pdu pdu;
+ int i;
+
+ strcpy((char *) pdu.jobname, o->name);
+ strcpy((char *) pdu.ioengine, ioengine);
+
+ pdu.iodepth = cpu_to_le32(o->iodepth);
+ pdu.rw = cpu_to_le32(o->td_ddir);
+
+ for (i = 0; i < 2; i++) {
+ pdu.min_bs[i] = cpu_to_le32(o->min_bs[i]);
+ pdu.max_bs[i] = cpu_to_le32(o->max_bs[i]);
+ }
+
+ pdu.numjobs = cpu_to_le32(o->numjobs);
+ pdu.group_reporting = cpu_to_le32(o->group_reporting);
+
+ fio_net_send_cmd(server_fd, FIO_NET_CMD_ADD_JOB, &pdu, sizeof(pdu), 0);