1、errno問題:
#include<asm/segment.h>
#include<string.h>
#include<errno.h>
char username[24]="";
int sys_iam(const char *name)
{
int n=0, i;
char temp[32];
for(i=0;i<32;i++)
{
temp[i]=get_fs_byte(&name[i]);
if(temp[i]!='\0')
n++;
else
break;
}
if(n<24)
strcpy(username, temp);
else
{
n=-1;
errno=EINVAL;
}
return n;
}
int sys_whoami(char *name, unsigned int size)
{
int n=0, i;
for(i=0;i<size;i++)
{
put_fs_byte(username[i], &name[i]);
if(username[i]!='\0')
n++;
else
break;
}
if(username[n]!='\0')
{
n=-1;
errno=EINVAL;
}
return n;
}
這是中國大學MOOC哈爾濱工業大學《作業系統》課的實驗程序中我寫的C語言源代碼“who.c”。現在的問題是,當我傳進來的引數字串多于23個字母后,為什么利用“dbg-c”除錯時看到的errno等于22,但在虛擬機中輸出errno時發現這個數是1?
2、Bochs除錯問題
當我除錯作業系統的時候,我怎樣才能除錯其中的用戶程式?也就是說,我如何才能跟蹤虛擬機中用戶程式的執行程序,并獲得Bochs虛擬機內編譯后生成的程式運行時的變數?
3、庫函式問題
我在“~/oslab/linus-0.11/lib”也創建了一個檔案,模仿“write.c”我寫了剛剛“who.c”的用戶態介面,但在Bochs虛擬機運行時并未找到對應的庫函式,以致虛擬機內的編譯總是失敗,這是為什么?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/157334.html
標籤:內核源代碼研究區
下一篇:請問已經安裝了虛擬機LINUX ,最后一步提示要卸載虛擬光驅,重新啟動才能使用,問題是:怎么卸載虛擬光驅,我在卸載/更新處沒有找到它的虛擬光驅
