Changeset 452268a1 in mainline for uspace/app/top/top.c
- Timestamp:
- 2010-04-03T16:52:07Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- acc3f745
- Parents:
- ee35ba0b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/top/top.c
ree35ba0b r452268a1 80 80 81 81 /* Read task ids */ 82 target->task_count = get_tasks(&target->task s);82 target->task_count = get_tasks(&target->taskinfos); 83 83 84 84 /* Read cpu infos */ … … 102 102 uint64_t busy = new_data->cpus[i].busy_ticks - old_data->cpus[i].busy_ticks; 103 103 uint64_t sum = idle + busy; 104 new_data->cpu_perc[i].idle = ((float)(idle * 100) / sum); 105 new_data->cpu_perc[i].busy = ((float)(busy * 100) / sum); 106 } 104 new_data->cpu_perc[i].idle = (float)(idle * 100) / sum; 105 new_data->cpu_perc[i].busy = (float)(busy * 100) / sum; 106 } 107 108 /* For all tasks compute sum and differencies of all cycles */ 109 uint64_t pages_total = 0; 110 uint64_t ucycles_total = 0; 111 uint64_t kcycles_total = 0; 112 uint64_t *ucycles_diff = malloc(new_data->task_count * sizeof(uint64_t)); 113 uint64_t *kcycles_diff = malloc(new_data->task_count * sizeof(uint64_t)); 114 unsigned int j = 0; 115 for (i = 0; i < new_data->task_count; ++i) { 116 /* Jump over all death tasks */ 117 while (old_data->taskinfos[j].taskid < new_data->taskinfos[i].taskid) 118 ++j; 119 if (old_data->taskinfos[j].taskid > new_data->taskinfos[i].taskid) { 120 /* This is newly borned task, ignore it */ 121 ucycles_diff[i] = 0; 122 kcycles_diff[i] = 0; 123 continue; 124 } 125 /* Now we now we have task with same id */ 126 ucycles_diff[i] = new_data->taskinfos[i].ucycles - old_data->taskinfos[j].ucycles; 127 kcycles_diff[i] = new_data->taskinfos[i].kcycles - old_data->taskinfos[j].kcycles; 128 129 pages_total += new_data->taskinfos[i].pages; 130 ucycles_total += ucycles_diff[i]; 131 kcycles_total += kcycles_diff[i]; 132 } 133 134 /* And now compute percental change */ 135 new_data->task_perc = malloc(new_data->task_count * sizeof(task_perc_t)); 136 for (i = 0; i < new_data->task_count; ++i) { 137 new_data->task_perc[i].pages = (float)(new_data->taskinfos[i].pages * 100) / pages_total; 138 new_data->task_perc[i].ucycles = (float)(ucycles_diff[i] * 100) / ucycles_total; 139 new_data->task_perc[i].kcycles = (float)(kcycles_diff[i] * 100) / kcycles_total; 140 } 141 142 /* And free temporary structures */ 143 free(ucycles_diff); 144 free(kcycles_diff); 107 145 } 108 146 109 147 static void free_data(data_t *target) 110 148 { 111 free(target->task s);149 free(target->taskinfos); 112 150 free(target->cpus); 113 151 free(target->cpu_perc); 152 free(target->task_perc); 114 153 } 115 154
Note:
See TracChangeset
for help on using the changeset viewer.