hns - 日記自動生成システム - Version 2.19.9

先月 2002年06月 来月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2002年06月11日(火) 旧暦 [n年日記]

#1 [NetBSD] not exclusive lock holder 1008730187 unlocking

>> NetBSD/macppc OpenFirmware Boot, Revision 1.6
>> (makoto@ibook, Mon May 27 16:28:24 JST 2002)
3839052+219140 [187920+155996]=0x432e20
 start=0x100000
panic: lockmgr: pid 0, not exclusive lock holder 1008730187 unlocking
Stopped in pid () at   0x30f214:	lwz r0,r1, 0x14
db> 
という表示は sys/kern/kern_lock.c の 715 行目付近かららしい
457 lockmgr(__volatile struct lock *lkp, u_int flags,
458     struct simplelock *interlkp)
.....
528  switch (flags & LK_TYPE_MASK) {
.....
707  case LK_RELEASE:
708          if (lkp->lk_exclusivecount != 0) {
709                  if (WEHOLDIT(lkp, pid, cpu_id) == 0) {
710                          if (lkp->lk_flags & LK_SPIN) {  
711                                  panic("lockmgr: processor %lu, not "
712                                      "exclusive lock holder %lu "
713                                      "unlocking", cpu_id, lkp->lk_cpu);
714                          } else {
715                                  panic("lockmgr: pid %d, not "
716                                      "exclusive lock holder %d "
717                                      "unlocking", pid,
718                                      lkp->lk_lockholder);
719                          }                   
sys/kern/init_main.c
    192         KERNEL_LOCK_INIT();
    ..
    348         /* Lock the kernel on behalf of proc0. */
    349         KERNEL_PROC_LOCK(p);

というのがあるが、多分 MULTIPROCESSOR 以外は何もしない(はず) 同じく
    447         /*
    448          * Get the vnode for '/'.  Set filedesc0.fd_fd.fd_cdir to
    449          * reference it.
    450          */
    451         if (VFS_ROOT(mountlist.cqh_first, &rootvnode))
    452                 panic("cannot find root vnode");
    453         cwdi0.cwdi_cdir = rootvnode;
    454         VREF(cwdi0.cwdi_cdir);
    455         VOP_UNLOCK(rootvnode, 0);
    456         cwdi0.cwdi_rdir = NULL;
この 455 行目かな。 でももう一度最初から見直したら Copyright を表示する前のような。

curcpu() が気になったので:

(ts 版) sys/arch/macppc/include/cpu.h より
  77 #ifdef MULTIPROCESSOR
  ...
  80 static struct cpu_info *curcpu(void);
  ...
  91 static __inline struct cpu_info *
  92 curcpu()
  93 {
  94         struct cpu_info *ci;
  95 
  96         asm volatile ("mfsprg %0,0" : "=r"(ci));
  97         return ci;
  98 }
  99 
 ...
 111 #else
 ...
 116 #define curcpu()                (&cpu_info_store)
 ...
 119 #endif /* MULTIPROCESSOR */
(na 版の時も sys/arch/powerpc/include/cpu.h に書いてあるだけで、define の内容は同じ) でもって sys/arch/macppc/macppc/cpu.c に
struct cpu_info cpu_info_store;
となっていて cpu_info[] にいろいろ書込んだり..

consinit() -> cninit() の最後の問題の気が:

(字が入力出来ないし) 一番初めの中の 709 行目の
709                  if (WEHOLDIT(lkp, pid, cpu_id) == 0) {
cpu_id がきっと変なのかも。



最近の日記
2024年03月10日
停電 (瞬電)
2024年03月03日
the second try on bare-metal
useradd
2024年02月29日
opendkim and senmail
2024年01月24日
chat/iam 0.0.8
2024年01月21日
uselocale vs setlocale (textproc/R-readxl)
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)