coredump: refine coredump info analyse
Signed-off-by: wanggang26 <wanggang26@xiaomi.com>
This commit is contained in:
parent
f7adb52c8b
commit
c58bd521a3
@ -110,6 +110,7 @@ static void coredump_dump_blkdev(pid_t pid)
|
|||||||
{
|
{
|
||||||
FAR void *stream = &g_blockstream;
|
FAR void *stream = &g_blockstream;
|
||||||
FAR struct coredump_info_s *info;
|
FAR struct coredump_info_s *info;
|
||||||
|
blkcnt_t nsectors;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (g_blockstream.inode == NULL)
|
if (g_blockstream.inode == NULL)
|
||||||
@ -118,8 +119,12 @@ static void coredump_dump_blkdev(pid_t pid)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsectors = (sizeof(struct coredump_info_s) +
|
||||||
|
g_blockstream.geo.geo_sectorsize - 1) /
|
||||||
|
g_blockstream.geo.geo_sectorsize;
|
||||||
|
|
||||||
ret = g_blockstream.inode->u.i_bops->read(g_blockstream.inode,
|
ret = g_blockstream.inode->u.i_bops->read(g_blockstream.inode,
|
||||||
g_blockinfo, g_blockstream.geo.geo_nsectors - 1, 1);
|
g_blockinfo, g_blockstream.geo.geo_nsectors - nsectors, nsectors);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
_alert("Coredump information read fail\n");
|
_alert("Coredump information read fail\n");
|
||||||
@ -149,10 +154,10 @@ static void coredump_dump_blkdev(pid_t pid)
|
|||||||
|
|
||||||
info->magic = COREDUMP_MAGIC;
|
info->magic = COREDUMP_MAGIC;
|
||||||
info->size = g_blockstream.common.nput;
|
info->size = g_blockstream.common.nput;
|
||||||
info->time = time(NULL);
|
info->time = time(NULL);
|
||||||
uname(&info->name);
|
uname(&info->name);
|
||||||
ret = g_blockstream.inode->u.i_bops->write(g_blockstream.inode,
|
ret = g_blockstream.inode->u.i_bops->write(g_blockstream.inode,
|
||||||
(FAR void *)info, g_blockstream.geo.geo_nsectors - 1, 1);
|
(FAR void *)info, g_blockstream.geo.geo_nsectors - nsectors, nsectors);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
_alert("Coredump information write fail\n");
|
_alert("Coredump information write fail\n");
|
||||||
@ -191,6 +196,7 @@ int coredump_set_memory_region(FAR struct memory_region_s *region)
|
|||||||
|
|
||||||
int coredump_initialize(void)
|
int coredump_initialize(void)
|
||||||
{
|
{
|
||||||
|
blkcnt_t nsectors;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (CONFIG_BOARD_MEMORY_RANGE[0] != '\0')
|
if (CONFIG_BOARD_MEMORY_RANGE[0] != '\0')
|
||||||
@ -216,7 +222,11 @@ int coredump_initialize(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_blockinfo = kmm_malloc(g_blockstream.geo.geo_sectorsize);
|
nsectors = (sizeof(struct coredump_info_s) +
|
||||||
|
g_blockstream.geo.geo_sectorsize - 1) /
|
||||||
|
g_blockstream.geo.geo_sectorsize;
|
||||||
|
|
||||||
|
g_blockinfo = kmm_malloc(g_blockstream.geo.geo_sectorsize * nsectors);
|
||||||
if (g_blockinfo == NULL)
|
if (g_blockinfo == NULL)
|
||||||
{
|
{
|
||||||
_alert("Coredump device memory alloc fail\n");
|
_alert("Coredump device memory alloc fail\n");
|
||||||
@ -227,6 +237,7 @@ int coredump_initialize(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
UNUSED(nsectors);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user