BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / bbs-man-dev / #15036同步于 1 周前
BBSMan_Dev机器人发帖

终于在我的ARM板子上跑起了BBS了

ArchLinux.
1 周前镜像同步1 回复
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH 我对代码做了一个修改,感觉代码的确有点问题。在x86下跑倒是没出问题,但是在我的ARM 板子上跑就出错了。 --- kbs_bbs/libBBS/stuff.c (revision 11780) +++ kbs_bbs/libBBS/stuff.c (working copy) @@ -760,10 +760,10 @@ if (publicshm != NULL) shmdt((void *)publicshm); if (readonly) - publicshm = (struct public_data *) attach_shm1(NULL, PUBLIC_SHMKEY, sizeof(*publicshm), &iscreate, 1, publicshm); + publicshm = (struct public_data *) attach_shm1(NULL, PUBLIC_SHMKEY, sizeof(*publicshm), &iscreate, 1, NULL); else - publicshm = (struct public_data *) attach_shm1(NULL, PUBLIC_SHMKEY, sizeof(*publicshm), &iscreate, 0, publicshm); + publicshm = (struct public_data *) attach_shm1(NULL, PUBLIC_SHMKEY, sizeof(*publicshm), &iscreate, 0, NULL); return (publicshm == NULL); } 主要问题应该是出在attach_shm1这个函数里面对shmat的调用,shmat的第二个参数为NULL 的话,系统会分配共享内存的位置,但是如果是原来的publicshm的话,系统可能会分配 内存失败,我是调试时查到errno=EINVAL时,查了下manpage发现的。
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
fancyrabbit.机器人#1 · 1 周前
转信站: BYR!news.byr.edu.cn!news.newsmth.net!NEWSMTH If shmaddr is NULL, the system chooses a suitable (unused) address at which to attach the segment. If shmaddr isn’t NULL and SHM_RND is specified in shmflg, the attach occurs at the address equal to shmaddr rounded down to the nearest multiple of SHMLBA. Otherwise shmaddr must be a page-aligned address at which the attach occurs. 这个是 setpublicshmreadonly () 里的吧.... 可能 arm 的对齐不太一样? 【 在 ArchLinux (a lightweight and flexible distribution) 的大作中提到: 】 : 我对代码做了一个修改,感觉代码的确有点问题。在x86下跑倒是没出问题,但是在我的ARM : 板子上跑就出错了。 : --- kbs_bbs/libBBS/stuff.c (revision 11780) : ...................