Changeset faf38b2 in mainline
- Timestamp:
- 2010-04-09T09:41:39Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 638927a
- Parents:
- a325832
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ps/ps.h
ra325832 rfaf38b2 42 42 extern size_t sys_ps_get_tasks(task_id_t *uspace_ids, size_t size); 43 43 extern int sys_ps_get_task_info(task_id_t *uspace_id, task_info_t *uspace_info); 44 extern int sys_ps_get_threads(t ask_id_t *uspace_id, thread_info_t *uspace_infos, size_t size);44 extern int sys_ps_get_threads(thread_info_t *uspace_infos, size_t size); 45 45 extern int sys_ps_get_cpu_info(uspace_cpu_info_t *uspace_cpu); 46 46 extern int sys_ps_get_mem_info(uspace_mem_info_t *mem_info); -
kernel/generic/include/ps/taskinfo.h
ra325832 rfaf38b2 74 74 typedef struct { 75 75 thread_id_t tid; 76 task_id_t taskid; 76 77 state_t state; 77 78 int priority; -
kernel/generic/src/ps/ps.c
ra325832 rfaf38b2 48 48 static size_t count; 49 49 static size_t max_count; 50 static task_t *selected_task;51 50 52 51 #define WRITE_TASK_ID(dst, i, src) copy_to_uspace(dst + i, src, sizeof(task_id_t)) … … 163 162 spinlock_lock(&t->lock); 164 163 165 if (t->task != selected_task) {166 spinlock_unlock(&t->lock);167 return true;168 }169 170 164 ++count; 171 165 if (count > max_count) { … … 175 169 176 170 result.tid = t->tid; 171 ASSERT(t->task); 172 result.taskid = t->task->taskid; 177 173 result.state = t->state; 178 174 result.priority = t->priority; … … 191 187 } 192 188 193 int sys_ps_get_threads(t ask_id_t *uspace_id, thread_info_t *uspace_infos, size_t size)189 int sys_ps_get_threads(thread_info_t *uspace_infos, size_t size) 194 190 { 195 191 ipl_t ipl; 196 192 ipl = interrupts_disable(); 197 193 198 task_id_t id; 199 copy_from_uspace(&id, uspace_id, sizeof(task_id_t)); 200 spinlock_lock(&tasks_lock); 201 selected_task = task_find_by_id(id); 202 spinlock_unlock(&tasks_lock); 203 204 if (!selected_task) { 205 return 0; 206 } 207 194 printf("LIst threads, size: %llu\n", size); 208 195 spinlock_lock(&threads_lock); 209 196 -
uspace/app/ps/ps.c
ra325832 rfaf38b2 99 99 int thread_count = THREAD_COUNT; 100 100 thread_info_t *threads = malloc(thread_count * sizeof(thread_info_t)); 101 int result = get_task_threads(t askid, threads, sizeof(thread_info_t) * thread_count);101 int result = get_task_threads(threads, sizeof(thread_info_t) * thread_count); 102 102 103 103 while (result > thread_count) { 104 104 thread_count *= 2; 105 105 threads = realloc(threads, thread_count * sizeof(thread_info_t)); 106 result = get_task_threads(t askid, threads, sizeof(thread_info_t) * thread_count);106 result = get_task_threads(threads, sizeof(thread_info_t) * thread_count); 107 107 } 108 108 … … 115 115 printf(" ID State CPU Prio [k]uCycles [k]kcycles Cycle fault\n"); 116 116 for (i = 0; i < result; ++i) { 117 if (threads[i].taskid != taskid) { 118 continue; 119 } 117 120 uint64_t ucycles, kcycles; 118 121 char usuffix, ksuffix; -
uspace/app/top/ps.c
ra325832 rfaf38b2 86 86 int thread_count = THREAD_COUNT; 87 87 thread_info_t *threads = malloc(thread_count * sizeof(thread_info_t)); 88 int result = get_task_threads(t askid, threads, sizeof(thread_info_t) * thread_count);88 int result = get_task_threads(threads, sizeof(thread_info_t) * thread_count); 89 89 90 90 while (result > thread_count) { 91 91 thread_count *= 2; 92 92 threads = realloc(threads, thread_count * sizeof(thread_info_t)); 93 result = get_task_threads(t askid, threads, sizeof(thread_info_t) * thread_count);93 result = get_task_threads(threads, sizeof(thread_info_t) * thread_count); 94 94 } 95 95 -
uspace/lib/c/generic/ps.c
ra325832 rfaf38b2 74 74 * 75 75 */ 76 int get_task_threads(t ask_id_t taskid, thread_info_t *infos, size_t size)76 int get_task_threads(thread_info_t *infos, size_t size) 77 77 { 78 return __SYSCALL3(SYS_PS_GET_THREADS, (sysarg_t) &taskid, (sysarg_t) infos, 79 (sysarg_t) size); 78 return __SYSCALL2(SYS_PS_GET_THREADS, (sysarg_t) infos, (sysarg_t) size); 80 79 } 81 80 -
uspace/lib/c/include/ps.h
ra325832 rfaf38b2 45 45 extern size_t get_task_ids(task_id_t *ids, size_t size); 46 46 extern int get_task_info(task_id_t id, task_info_t *info); 47 extern int get_task_threads(t ask_id_t taskid, thread_info_t *infos, size_t size);47 extern int get_task_threads(thread_info_t *infos, size_t size); 48 48 49 49 #endif
Note:
See TracChangeset
for help on using the changeset viewer.