Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
core dump for 8266
  • Loading branch information
wuqi.hz authored and Cheng-SG committed Jul 17, 2018
commit 51444025403da69cf0358b5f0ee7eab899f6f7e2
19 changes: 1 addition & 18 deletions kernel/rhino/core/include/k_err.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,25 +84,8 @@ typedef enum {
} kstat_t;

typedef void (*krhino_err_proc_t)(kstat_t err);
extern krhino_err_proc_t g_err_proc;

/**
* convert int to ascii(HEX)
* while using format % in libc, malloc/free is involved.
* this function avoid using malloc/free. so it works when heap corrupt.
* @param[in] num number
* @param[in] str fix 8 character str
* @return str
*/
char *k_int2str(int num, char *str);

/**
* call g_err_proc
* @param[in] err error_id
* @return void
*/
void k_err_proc(kstat_t err);

extern krhino_err_proc_t g_err_proc;

#endif /* K_ERR_H */

7 changes: 0 additions & 7 deletions kernel/rhino/core/include/k_task.h
Original file line number Diff line number Diff line change
Expand Up @@ -304,12 +304,5 @@ kstat_t krhino_task_info_get(ktask_t *task, size_t idx, void **info);
*/
void krhino_task_deathbed(void);

#if (RHINO_CONFIG_SYSTEM_STATS > 0)
/**
* This function print the overview of tasks
*/
void krhino_task_overview(int (*print_func)(const char *fmt, ...));
#endif

#endif /* K_TASK_H */

27 changes: 0 additions & 27 deletions kernel/rhino/core/k_err.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,6 @@

#include <k_api.h>

/* convert int to ascii(HEX)
while using format % in libc, malloc/free is involved.
this function avoid using malloc/free. so it works when heap corrupt. */
char *k_int2str(int num, char *str)
{
char index[] = "0123456789ABCDEF";

str[7] = index[num % 16];
num /= 16;
str[6] = index[num % 16];
num /= 16;
str[5] = index[num % 16];
num /= 16;
str[4] = index[num % 16];
num /= 16;
str[3] = index[num % 16];
num /= 16;
str[2] = index[num % 16];
num /= 16;
str[1] = index[num % 16];
num /= 16;
str[0] = index[num % 16];
num /= 16;

return str;
}

void k_err_proc(kstat_t err)
{
if (g_err_proc != NULL) {
Expand Down
15 changes: 1 addition & 14 deletions kernel/rhino/core/k_mm.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void k_mm_init(void)
uint32_t e = 0;

/* init memory region */
krhino_init_mm_head(&g_kmm_head, g_mm_region[0].start, g_mm_region[0].len);
(void)krhino_init_mm_head(&g_kmm_head, g_mm_region[0].start, g_mm_region[0].len);
for (e = 1 ; e < g_region_num ; e++) {
krhino_add_mm_region(g_kmm_head, g_mm_region[e].start, g_mm_region[e].len);
}
Expand Down Expand Up @@ -844,18 +844,5 @@ void *krhino_mm_realloc(void *oldmem, size_t newsize)
return tmp;
}

#if (K_MM_STATISTIC > 0)
static char s_heap_overview[] =
"free = 0x | used = 0x | max used = 0x \r\n";
void krhino_mm_overview(int (*print_func)(const char *fmt, ...))
{
k_int2str(g_kmm_head->free_size, &s_heap_overview[9]);
k_int2str(g_kmm_head->used_size, &s_heap_overview[29]);
k_int2str(g_kmm_head->maxused_size, &s_heap_overview[53]);

print_func(s_heap_overview);
}
#endif

#endif

69 changes: 0 additions & 69 deletions kernel/rhino/core/k_task.c
Original file line number Diff line number Diff line change
Expand Up @@ -1046,72 +1046,3 @@ void krhino_task_deathbed(void)
#endif
}

#if (RHINO_CONFIG_SYSTEM_STATS > 0)
static char s_task_overview[] =
" 0x 0x 0x (0x )\r\n";

void krhino_task_overview(int (*print_func)(const char *fmt, ...))
{
size_t free_size;
klist_t *listnode;
ktask_t *task;
int stat_idx;
int i;
char *cpu_stat[] = {"UNK", "RDY", "PEND", "SUS", "PEND_SUS", "SLP", "SLP_SUS", "DEL"};
const name_t *task_name;

print_func("--------------------------------------------------------------------------\r\n");
print_func("Name State Prio Stack StackSize (MinFree)\r\n");
print_func("--------------------------------------------------------------------------\r\n");

for (listnode = g_kobj_list.task_head.next;
listnode != &g_kobj_list.task_head;
listnode = listnode->next) {
task = krhino_list_entry(listnode, ktask_t, task_stats_item);

if (krhino_task_stack_min_free(task, &free_size) != RHINO_SUCCESS) {
free_size = 0;
}
free_size *= sizeof(cpu_stack_t);

/* set name */
task_name = task->task_name == NULL ? "anonym" : task->task_name;
for ( i = 0 ; i < 20 ; i++ ) {
s_task_overview[i] = ' ';
}
for ( i = 0 ; i < 20 ; i++ ) {
if ( task_name[i] == '\0' ) {
break;
}
s_task_overview[i] = task_name[i];
}

/* set state */
stat_idx = task->task_state >= sizeof(cpu_stat) / sizeof(char *) ? 0 : task->task_state;
for ( i = 21 ; i < 29 ; i++ ) {
s_task_overview[i] = ' ';
}
for ( i = 21 ; i < 29 ; i++ ) {
if ( cpu_stat[stat_idx][i - 21] == '\0' ) {
break;
}
s_task_overview[i] = cpu_stat[stat_idx][i - 21];
}

/* set stack priority */
k_int2str(task->prio, &s_task_overview[32]);

/* set stack info */
k_int2str((int)task->task_stack_base, &s_task_overview[43]);
k_int2str((int)task->stack_size * sizeof(cpu_stack_t), &s_task_overview[54]);
k_int2str((int)free_size, &s_task_overview[65]);

/* print */
print_func(s_task_overview);
}

return;
}
#endif


57 changes: 57 additions & 0 deletions kernel/rhino/debug/include/k_overview.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* Copyright (C) 2015-2017 Alibaba Group Holding Limited
*/

#ifndef K_OVERVIEW_H
#define K_OVERVIEW_H

#ifdef __cplusplus
extern "C" {
#endif

/**
* convert int to ascii(HEX)
* while using format % in libc, malloc/free is involved.
* this function avoid using malloc/free. so it works when heap corrupt.
* @param[in] num number
* @param[in] str fix 8 character str
* @return str
*/
char *k_int2str(int num, char *str);

/**
* This function print the overview of heap
* @param[in] print_func function to output information
*/
void krhino_mm_overview(int (*print_func)(const char *fmt, ...));

/**
* This function print the overview of tasks
* @param[in] print_func function to output information
*/
void krhino_task_overview(int (*print_func)(const char *fmt, ...));

/**
* This function print the overview of buf_queues
* @param[in] print_func function to output information
*/
void krhino_buf_queue_overview(int (*print_func)(const char *fmt, ...));

/**
* This function print the overview of queues
* @param[in] print_func function to output information
*/
void krhino_queue_overview(int (*print_func)(const char *fmt, ...));

/**
* This function print the overview of sems
* @param[in] print_func function to output information
*/
void krhino_sem_overview(int (*print_func)(const char *fmt, ...));

#ifdef __cplusplus
}
#endif

#endif /* K_OVERVIEW_H */

Loading