[IMPROVE] Replace `pack_int` with `pack_int{32,64}
authorDmitry Bogatov <d.bogatov@samsung.com>
Tue, 29 Oct 2013 07:55:25 +0000 (11:55 +0400)
committerDmitry Bogatov <d.bogatov@samsung.com>
Tue, 29 Oct 2013 08:15:50 +0000 (12:15 +0400)
Add static assert for primitive type-safety.

pack_int{32,64} prefered since they can be rewritten
as functions, pack_int can not due use of typeof.

Change-Id: I3afecda9c7c0399d0be6485fec8f909dccd5eb9c
Signed-off-by: Dmitry Bogatov <d.bogatov@samsung.com>
daemon/da_data.c
daemon/da_protocol.c
daemon/da_protocol.h
daemon/sys_stat.c

index 17b2fca..d152d35 100644 (file)
@@ -225,7 +225,7 @@ struct msg_data_t *gen_message_terminate(uint32_t id)
        fill_data_msg_head(data,NMSG_TERMINATE, 0, payload_len);
        // TODO fill good value
        p = data->payload;
-       pack_int(p,id);
+       pack_int32(p, id);
        return data;
 }
 
@@ -258,12 +258,12 @@ struct msg_data_t *gen_message_event(
        fill_data_msg_head(data, NMSG_RECORD, 0, payload_len);
 
        p = data->payload;
-       pack_int(p,events_count);
+       pack_int32(p, events_count);
 
        for (i=0; i<events_count; i++){
                pack_int32(p,id);
-               pack_int32(p,events[i].type);
-               pack_int32(p,events[i].code);
+               pack_int32(p, (int32_t) events[i].type);
+               pack_int32(p, (int32_t) events[i].code);
                pack_int32(p,events[i].value);
        }
 
@@ -274,4 +274,3 @@ void inline free_msg_data(struct msg_data_t *msg)
 {
        free(msg);
 };
-
index 9caf7ee..8620b78 100644 (file)
@@ -631,8 +631,8 @@ static struct msg_t *gen_binary_info_reply(struct app_info_t *app_info)
        msg->id = NMSG_BINARY_INFO_ACK;
        p = msg->payload;
 
-       pack_int(p, ret_id);
-       pack_int(p, binary_type);
+       pack_int32(p, ret_id);
+       pack_int32(p, binary_type);
        pack_str(p, binary_path);
 
        msg->len = p - msg->payload;
@@ -677,16 +677,16 @@ static struct msg_t *gen_target_info_reply(struct target_info_t *target_info)
        msg->id = NMSG_GET_TARGET_INFO_ACK;
        p = msg->payload;
 
-       pack_int(p, ret_id);
+       pack_int32(p, ret_id);
        pack_int64(p, target_info->sys_mem_size);
        pack_int64(p, target_info->storage_size);
-       pack_int(p, target_info->bluetooth_supp);
-       pack_int(p, target_info->gps_supp);
-       pack_int(p, target_info->wifi_supp);
-       pack_int(p, target_info->camera_count);
+       pack_int32(p, target_info->bluetooth_supp);
+       pack_int32(p, target_info->gps_supp);
+       pack_int32(p, target_info->wifi_supp);
+       pack_int32(p, target_info->camera_count);
        pack_str(p, target_info->network_type);
-       pack_int(p, target_info->max_brightness);
-       pack_int(p, target_info->cpu_core_count);
+       pack_int32(p, target_info->max_brightness);
+       pack_int32(p, target_info->cpu_core_count);
        pack_int32(p, supported_devices_count);
        p = pack_str_array(p, supported_devices_strings,
                           supported_devices_count);
@@ -764,8 +764,7 @@ int sendACKToHost(enum HostMessageT resp, enum ErrorCode err_code,
                //set payload lenth
                msg->len = payload_size + sizeof(err);
                //set return id
-               //*(uint32_t *)p = err; p+=sizeof(err);
-               pack_int(p, err);
+               pack_int32(p, err);
                //copy payload data
                memcpy(p, payload, payload_size);
 
index e9f6552..e20ef72 100644 (file)
@@ -326,23 +326,19 @@ struct recorded_event_t {
        uint32_t code;
        uint32_t value;
 };
+#define static_assert(cond) \
+       char __attribute__((unused)) __static_assert[(cond) ? 1 : -1];
 
-#define pack_int(to, n)                                        \
-       do {                                            \
-               *(typeof(n) *) to = n;                  \
-               to += sizeof(typeof(n));                \
+#define pack_int64(to, n) do {                                         \
+               static_assert(sizeof(n) == 8);                          \
+               *(uint64_t *)to = n;                                    \
+               to += sizeof(uint64_t);                                 \
        } while (0)
 
-#define pack_int64(to, n)                                      \
-       do {                                                    \
-               *(uint64_t *)to = n;                            \
-               to += sizeof(uint64_t);                         \
-       } while (0)
-
-#define pack_int32(to, n)                                      \
-       do {                                                    \
-               *(uint32_t *)to = n;                            \
-               to += sizeof(uint32_t);                         \
+#define pack_int32(to, n) do {                                         \
+               static_assert(sizeof(n) == 4);                          \
+               *(uint32_t *)to = n;                                    \
+               to += sizeof(uint32_t);                                 \
        } while (0)
 
 #define pack_time(to, n)                                               \
index b2b04e6..367f7ee 100644 (file)
@@ -929,7 +929,6 @@ static int parse_proc_smaps_file_bypid(char *path, proc_t* P)
                        {
                                char *p = buf;
                                p = strstr(buf, ":");
-                               int add = 0;
                                if (p != 0) {
                                        sscanf(p, ":%s kB", numbuf);
                                        P->sh_mem += atoi(numbuf);
@@ -972,7 +971,6 @@ static int parse_proc_smaps_file_bypid(char *path, proc_t* P)
                        {
                                char *p = buf;
                                p = strstr(buf, ":");
-                               int add = 0;
                                if (p != 0) {
                                        sscanf(p, ":%s kB", numbuf);
                                        P->sh_mem += atoi(numbuf);
@@ -1715,7 +1713,6 @@ int get_camera_count()
 static int get_device_network_type(char* buf, int buflen)
 {
        int len = 0;
-       char *p = buf;
        bool bool_var;
 
        system_info_get_platform_bool("tizen.org/feature/network.telephony.service.cdma", &bool_var);
@@ -2763,90 +2760,90 @@ struct msg_data_t *pack_system_info(struct system_info_t *sys_info)
                                pack_float(p, 0.0);
                }
                // thread
-               pack_int(p, sys_info->count_of_threads);
+               pack_int32(p, sys_info->count_of_threads);
                for (i = 0; i < sys_info->count_of_threads; i++) {
                        if (sys_info->thread_load) {
-                               pack_int(p, sys_info->thread_load[i].pid);
+                               pack_int32(p, sys_info->thread_load[i].pid);
                                pack_float(p, sys_info->thread_load[i].load);
                        } else {
-                               pack_int(p, 0);
+                               pack_int32(p, 0);
                                pack_float(p, 0.0);
                        }
                }
        } else {
-               pack_float(p, 0.0); // pack app_cpu_usage
+               pack_float(p, 0.0); /* pack app_cpu_usage */
 
                for (i = 0; i < num_of_cpu; i++) {
-                       pack_float(p, 0.0); // pack cpu_frequency
-                       pack_float(p, 0.0); // pack cpu_load
+                       pack_float(p, 0.0); /* pack cpu_frequency */
+                       pack_float(p, 0.0); /* pack cpu_load */
                }
-               // thread
-               pack_int(p, 0); // pack count_of_threads
+               /* thread */
+               pack_int32(p, 0); /* pack count_of_threads */
        }
 
-       // process
+       /* process */
        if (IS_OPT_SET(FL_PROCESSES)) {
-               pack_int(p, sys_info->count_of_processes);
+               pack_int32(p, sys_info->count_of_processes);
                for (i = 0; i < sys_info->count_of_processes; i++) {
                        if (sys_info->process_load) {
-                               pack_int(p, sys_info->process_load[i].id);
+                               pack_int32(p, sys_info->process_load[i].id);
                                pack_float(p, sys_info->process_load[i].load);
                        } else {
-                               pack_int(p, 0);
+                               pack_int32(p, 0);
                                pack_float(p, 0.0);
                        }
                }
        } else {
-               pack_int(p, 0); // pack count_of_processes
+               pack_int32(p, 0); /* pack count_of_processes */
        }
 
-       // memory
+       /* memory */
        if (IS_OPT_SET(FL_MEMORY)) {
-               pack_int(p, sys_info->virtual_memory);
-               pack_int(p, sys_info->resident_memory);
-               pack_int(p, sys_info->shared_memory);
-               pack_int(p, sys_info->pss_memory);
-               pack_int(p, sys_info->total_alloc_size);
-               pack_int(p, sys_info->system_memory_total);
-               pack_int(p, sys_info->system_memory_used);
+               pack_int32(p, sys_info->virtual_memory);
+               pack_int32(p, sys_info->resident_memory);
+               pack_int32(p, sys_info->shared_memory);
+               pack_int32(p, sys_info->pss_memory);
+               pack_int32(p, sys_info->total_alloc_size);
+               pack_int64(p, sys_info->system_memory_total);
+               pack_int64(p, sys_info->system_memory_used);
        } else {
-               pack_int(p, 0); // pack virtual_memory
-               pack_int(p, 0); // pack resident_memory
-               pack_int(p, 0); // pack shared_memory
-               pack_int(p, 0); // pack pss_memory
-               pack_int(p, 0); // pack total_alloc_size
-               pack_int64(p, 0); // pack system_memory_total
-               pack_int64(p, 0); // pack system_memory_used
-       }
-
-       pack_int(p, sys_info->total_used_drive);
-       pack_int(p, sys_info->disk_reads);
-       pack_int(p, sys_info->disk_sectors_read);
-       pack_int(p, sys_info->disk_writes);
-       pack_int(p, sys_info->disk_sectors_write);
-
-       pack_int(p, sys_info->network_send_size);
-       pack_int(p, sys_info->network_receive_size);
-
-       pack_int(p, sys_info->wifi_status);
-       pack_int(p, sys_info->bt_status);
-       pack_int(p, sys_info->gps_status);
-       pack_int(p, sys_info->brightness_status);
-       pack_int(p, sys_info->camera_status);
-       pack_int(p, sys_info->sound_status);
-       pack_int(p, sys_info->audio_status);
-       pack_int(p, sys_info->vibration_status);
-       pack_int(p, sys_info->voltage_status);
-       pack_int(p, sys_info->rssi_status);
-       pack_int(p, sys_info->video_status);
-       pack_int(p, sys_info->call_status);
-       pack_int(p, sys_info->dnet_status);
-
-       pack_int(p, sys_info->energy);
+               pack_int32(p, 0); /* pack virtual_memory */
+               pack_int32(p, 0); /* pack resident_memory */
+               pack_int32(p, 0); /* pack shared_memory */
+               pack_int32(p, 0); /* pack pss_memory */
+               pack_int32(p, 0); /* pack total_alloc_size */
+               pack_int64(p, (uint64_t) 0); /* pack system_memory_total */
+               pack_int64(p, (uint64_t) 0); /* pack system_memory_used */
+       }
+
+       pack_int32(p, sys_info->total_used_drive);
+       pack_int32(p, sys_info->disk_reads);
+       pack_int32(p, sys_info->disk_sectors_read);
+       pack_int32(p, sys_info->disk_writes);
+       pack_int32(p, sys_info->disk_sectors_write);
+
+       pack_int32(p, sys_info->network_send_size);
+       pack_int32(p, sys_info->network_receive_size);
+
+       pack_int32(p, sys_info->wifi_status);
+       pack_int32(p, sys_info->bt_status);
+       pack_int32(p, sys_info->gps_status);
+       pack_int32(p, sys_info->brightness_status);
+       pack_int32(p, sys_info->camera_status);
+       pack_int32(p, sys_info->sound_status);
+       pack_int32(p, sys_info->audio_status);
+       pack_int32(p, sys_info->vibration_status);
+       pack_int32(p, sys_info->voltage_status);
+       pack_int32(p, sys_info->rssi_status);
+       pack_int32(p, sys_info->video_status);
+       pack_int32(p, sys_info->call_status);
+       pack_int32(p, sys_info->dnet_status);
+
+       pack_int32(p, sys_info->energy);
        for (i = 0; i != supported_devices_count; ++i)
-               pack_int(p, sys_info->energy_per_device[i]);
+               pack_int32(p, sys_info->energy_per_device[i]);
        for (i = 0; i != supported_devices_count; ++i)
-               pack_int(p, sys_info->app_energy_per_device[i]);
+               pack_int32(p, sys_info->app_energy_per_device[i]);
 
        return msg;
 }