sensors: changed from pthread_mutex_t to QemuMutex
authorJinhyung Choi <jinhyung2.choi@samsung.com>
Mon, 23 Jun 2014 08:21:50 +0000 (17:21 +0900)
committerJinhyung Choi <jinhyung2.choi@samsung.com>
Mon, 23 Jun 2014 08:21:50 +0000 (17:21 +0900)
Change-Id: Icaed4d13618fbe025c67591963890550a6cf4d3d
Signed-off-by: Jinhyung Choi <jinhyung2.choi@samsung.com>
tizen/src/hw/maru_virtio_sensor.c

index 19eecfef86b56fca0b0ca09ca9ad35501d696a2c..e1aacaae0260ecfc6ed4496fd0b84677f73e39b6 100644 (file)
@@ -42,11 +42,11 @@ MULTI_DEBUG_CHANNEL(qemu, virtio-sensor);
 #define _MAX_BUF            1024
 #define __MAX_BUF_SENSOR    32
 
-static pthread_mutex_t accel_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t geo_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t gyro_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t light_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t proxi_mutex = PTHREAD_MUTEX_INITIALIZER;
+static QemuMutex accel_mutex;
+static QemuMutex geo_mutex;
+static QemuMutex gyro_mutex;
+static QemuMutex light_mutex;
+static QemuMutex proxi_mutex;
 
 static char accel_xyz [__MAX_BUF_SENSOR] = {'0',',','9','8','0','6','6','5',',','0'};
 static int accel_enable = 0;
@@ -156,105 +156,105 @@ static void __set_sensor_data (enum sensor_types type, char* data, int len)
 
     switch (type) {
         case sensor_type_accel:
-            pthread_mutex_lock(&accel_mutex);
+            qemu_mutex_lock(&accel_mutex);
             strcpy(accel_xyz, data);
-            pthread_mutex_unlock(&accel_mutex);
+            qemu_mutex_unlock(&accel_mutex);
             break;
         case sensor_type_accel_enable:
-            pthread_mutex_lock(&accel_mutex);
+            qemu_mutex_lock(&accel_mutex);
             sscanf(data, "%d", &accel_enable);
-            pthread_mutex_unlock(&accel_mutex);
+            qemu_mutex_unlock(&accel_mutex);
             break;
         case sensor_type_accel_delay:
-            pthread_mutex_lock(&accel_mutex);
+            qemu_mutex_lock(&accel_mutex);
             sscanf(data, "%d", &accel_delay);
-            pthread_mutex_unlock(&accel_mutex);
+            qemu_mutex_unlock(&accel_mutex);
             break;
         case sensor_type_gyro_enable:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sscanf(data, "%d", &gyro_enable);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_delay:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sscanf(data, "%d", &gyro_delay);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_x:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sscanf(data, "%d", &gyro_x_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_y:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sscanf(data, "%d", &gyro_y_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_z:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sscanf(data, "%d", &gyro_z_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sscanf(data, "%d %d %d", &gyro_x_raw, &gyro_y_raw, &gyro_z_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_light_adc:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sscanf(data, "%d", &light_adc);
             light_level = (light_adc / 6554) % 10 + 1;
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_light_level:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sscanf(data, "%d", &light_level);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_light_enable:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sscanf(data, "%d", &light_enable);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_light_delay:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sscanf(data, "%d", &light_delay);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_proxi:
-            pthread_mutex_lock(&proxi_mutex);
+            qemu_mutex_lock(&proxi_mutex);
             sscanf(data, "%d", &proxi_vo);
-            pthread_mutex_unlock(&proxi_mutex);
+            qemu_mutex_unlock(&proxi_mutex);
             break;
         case sensor_type_proxi_enable:
-            pthread_mutex_lock(&proxi_mutex);
+            qemu_mutex_lock(&proxi_mutex);
             sscanf(data, "%d", &proxi_enable);
-            pthread_mutex_unlock(&proxi_mutex);
+            qemu_mutex_unlock(&proxi_mutex);
             break;
         case sensor_type_proxi_delay:
-            pthread_mutex_lock(&proxi_mutex);
+            qemu_mutex_lock(&proxi_mutex);
             sscanf(data, "%d", &proxi_delay);
-            pthread_mutex_unlock(&proxi_mutex);
+            qemu_mutex_unlock(&proxi_mutex);
             break;
         case sensor_type_mag:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             strcpy(geo_tesla, data);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_tilt:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             strcpy(geo_raw, data);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_geo_enable:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             sscanf(data, "%d", &geo_enable);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_geo_delay:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             sscanf(data, "%d", &geo_delay);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         default:
             return;
@@ -272,105 +272,105 @@ static void __get_sensor_data(enum sensor_types type, char* msg_info)
             sprintf(msg_info, "%d", sensor_capability);
             break;
         case sensor_type_accel:
-            pthread_mutex_lock(&accel_mutex);
+            qemu_mutex_lock(&accel_mutex);
             strcpy(msg_info, accel_xyz);
-            pthread_mutex_unlock(&accel_mutex);
+            qemu_mutex_unlock(&accel_mutex);
             break;
         case sensor_type_accel_enable:
-            pthread_mutex_lock(&accel_mutex);
+            qemu_mutex_lock(&accel_mutex);
             sprintf(msg_info, "%d", accel_enable);
-            pthread_mutex_unlock(&accel_mutex);
+            qemu_mutex_unlock(&accel_mutex);
             break;
         case sensor_type_accel_delay:
-            pthread_mutex_lock(&accel_mutex);
+            qemu_mutex_lock(&accel_mutex);
             sprintf(msg_info, "%d", accel_delay);
-            pthread_mutex_unlock(&accel_mutex);
+            qemu_mutex_unlock(&accel_mutex);
             break;
         case sensor_type_mag:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             strcpy(msg_info, geo_tesla);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_tilt:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             strcpy(msg_info, geo_raw);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_geo_enable:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             sprintf(msg_info, "%d", geo_enable);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_geo_delay:
-            pthread_mutex_lock(&geo_mutex);
+            qemu_mutex_lock(&geo_mutex);
             sprintf(msg_info, "%d", geo_delay);
-            pthread_mutex_unlock(&geo_mutex);
+            qemu_mutex_unlock(&geo_mutex);
             break;
         case sensor_type_gyro:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sprintf(msg_info, "%d,%d,%d", gyro_x_raw, gyro_y_raw, gyro_z_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_enable:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sprintf(msg_info, "%d", gyro_enable);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_delay:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sprintf(msg_info, "%d", gyro_delay);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_x:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sprintf(msg_info, "%d", gyro_x_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_y:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sprintf(msg_info, "%d", gyro_y_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_gyro_z:
-            pthread_mutex_lock(&gyro_mutex);
+            qemu_mutex_lock(&gyro_mutex);
             sprintf(msg_info, "%d", gyro_z_raw);
-            pthread_mutex_unlock(&gyro_mutex);
+            qemu_mutex_unlock(&gyro_mutex);
             break;
         case sensor_type_light:
         case sensor_type_light_adc:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sprintf(msg_info, "%d", light_adc);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_light_level:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sprintf(msg_info, "%d", light_level);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_light_enable:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sprintf(msg_info, "%d", light_enable);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_light_delay:
-            pthread_mutex_lock(&light_mutex);
+            qemu_mutex_lock(&light_mutex);
             sprintf(msg_info, "%d", light_delay);
-            pthread_mutex_unlock(&light_mutex);
+            qemu_mutex_unlock(&light_mutex);
             break;
         case sensor_type_proxi:
-            pthread_mutex_lock(&proxi_mutex);
+            qemu_mutex_lock(&proxi_mutex);
             sprintf(msg_info, "%d", proxi_vo);
-            pthread_mutex_unlock(&proxi_mutex);
+            qemu_mutex_unlock(&proxi_mutex);
             break;
         case sensor_type_proxi_enable:
-            pthread_mutex_lock(&proxi_mutex);
+            qemu_mutex_lock(&proxi_mutex);
             sprintf(msg_info, "%d", proxi_enable);
-            pthread_mutex_unlock(&proxi_mutex);
+            qemu_mutex_unlock(&proxi_mutex);
             break;
         case sensor_type_proxi_delay:
-            pthread_mutex_lock(&proxi_mutex);
+            qemu_mutex_lock(&proxi_mutex);
             sprintf(msg_info, "%d", proxi_delay);
-            pthread_mutex_unlock(&proxi_mutex);
+            qemu_mutex_unlock(&proxi_mutex);
             break;
         default:
             return;
@@ -523,6 +523,12 @@ static void virtio_sensor_realize(DeviceState *dev, Error **errp)
         return;
     }
 
+    qemu_mutex_init(&accel_mutex);
+    qemu_mutex_init(&gyro_mutex);
+    qemu_mutex_init(&geo_mutex);
+    qemu_mutex_init(&light_mutex);
+    qemu_mutex_init(&proxi_mutex);
+
     vsensor->vq = virtio_add_queue(&vsensor->vdev, 64, virtio_sensor_vq);
 
     INFO("initialized sensor type: %s\n", vsensor->sensors);
@@ -537,6 +543,12 @@ static void virtio_sensor_unrealize(DeviceState *dev, Error **errp)
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     INFO("destroy sensor device\n");
 
+    qemu_mutex_destroy(&accel_mutex);
+    qemu_mutex_destroy(&gyro_mutex);
+    qemu_mutex_destroy(&geo_mutex);
+    qemu_mutex_destroy(&light_mutex);
+    qemu_mutex_destroy(&proxi_mutex);
+
     virtio_cleanup(vdev);
 }