vserver 1.9.3
[linux-2.6.git] / drivers / s390 / cio / cmf.c
index 788ae49..1708a16 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/s390/cio/cmf.c ($Revision: 1.15 $)
+ * linux/drivers/s390/cio/cmf.c ($Revision: 1.16 $)
  *
  * Linux on zSeries Channel Measurement Facility support
  *
@@ -526,29 +526,26 @@ readall_cmb (struct ccw_device *cdev, struct cmbdata *data)
        time = get_clock() - cdev->private->cmb_start_time;
        spin_unlock_irqrestore(cdev->ccwlock, flags);
 
-       *data = (struct cmbdata) {
-               /* we only know values before device_busy_time */
-               .size = offsetof(struct cmbdata, device_busy_time),
-
-               /* conver to nanoseconds */
-               .elapsed_time = (time * 1000) >> 12,
-
-               /* copy data to new structure */
-               .ssch_rsch_count                = cmb.ssch_rsch_count,
-               .sample_count                   = cmb.sample_count,
-
-               /* time fields are converted to nanoseconds while copying */
-               .device_connect_time
-                       = time_to_nsec(cmb.device_connect_time),
-               .function_pending_time
-                       = time_to_nsec(cmb.function_pending_time),
-               .device_disconnect_time
-                       = time_to_nsec(cmb.device_disconnect_time),
-               .control_unit_queuing_time
-                       = time_to_nsec(cmb.control_unit_queuing_time),
-               .device_active_only_time
-                       = time_to_nsec(cmb.device_active_only_time),
-       };
+       memset(data, sizeof(struct cmbdata), 0);
+
+       /* we only know values before device_busy_time */
+       data->size = offsetof(struct cmbdata, device_busy_time);
+
+       /* convert to nanoseconds */
+       data->elapsed_time = (time * 1000) >> 12;
+
+       /* copy data to new structure */
+       data->ssch_rsch_count = cmb.ssch_rsch_count;
+       data->sample_count = cmb.sample_count;
+
+       /* time fields are converted to nanoseconds while copying */
+       data->device_connect_time = time_to_nsec(cmb.device_connect_time);
+       data->function_pending_time = time_to_nsec(cmb.function_pending_time);
+       data->device_disconnect_time = time_to_nsec(cmb.device_disconnect_time);
+       data->control_unit_queuing_time
+               = time_to_nsec(cmb.control_unit_queuing_time);
+       data->device_active_only_time
+               = time_to_nsec(cmb.device_active_only_time);
 
        return 0;
 }
@@ -739,33 +736,29 @@ readall_cmbe (struct ccw_device *cdev, struct cmbdata *data)
        time = get_clock() - cdev->private->cmb_start_time;
        spin_unlock_irqrestore(cdev->ccwlock, flags);
 
-       *data = (struct cmbdata) {
-               /* we only know values before device_busy_time */
-               .size = offsetof(struct cmbdata, device_busy_time),
-
-               /* conver to nanoseconds */
-               .elapsed_time = (time * 1000) >> 12,
-
-               /* copy data to new structure */
-               .ssch_rsch_count                = cmb.ssch_rsch_count,
-               .sample_count                   = cmb.sample_count,
-
-               /* time fields are converted to nanoseconds while copying */
-               .device_connect_time
-                       = time_to_nsec(cmb.device_connect_time),
-               .function_pending_time
-                       = time_to_nsec(cmb.function_pending_time),
-               .device_disconnect_time
-                       = time_to_nsec(cmb.device_disconnect_time),
-               .control_unit_queuing_time
-                       = time_to_nsec(cmb.control_unit_queuing_time),
-               .device_active_only_time
-                       = time_to_nsec(cmb.device_active_only_time),
-               .device_busy_time
-                       = time_to_nsec(cmb.device_busy_time),
-               .initial_command_response_time
-                       = time_to_nsec(cmb.initial_command_response_time),
-       };
+       memset (data, sizeof(struct cmbdata), 0);
+
+       /* we only know values before device_busy_time */
+       data->size = offsetof(struct cmbdata, device_busy_time);
+
+       /* conver to nanoseconds */
+       data->elapsed_time = (time * 1000) >> 12;
+
+       /* copy data to new structure */
+       data->ssch_rsch_count = cmb.ssch_rsch_count;
+       data->sample_count = cmb.sample_count;
+
+       /* time fields are converted to nanoseconds while copying */
+       data->device_connect_time = time_to_nsec(cmb.device_connect_time);
+       data->function_pending_time = time_to_nsec(cmb.function_pending_time);
+       data->device_disconnect_time = time_to_nsec(cmb.device_disconnect_time);
+       data->control_unit_queuing_time
+               = time_to_nsec(cmb.control_unit_queuing_time);
+       data->device_active_only_time
+               = time_to_nsec(cmb.device_active_only_time);
+       data->device_busy_time = time_to_nsec(cmb.device_busy_time);
+       data->initial_command_response_time
+               = time_to_nsec(cmb.initial_command_response_time);
 
        return 0;
 }