亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? namei.c

?? linux下的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
}//// 系統調用函數 - 刪除指定名稱的目錄。// 參數: name - 目錄名(路徑名)。// 返回:返回0 表示成功,否則返回出錯號。intsys_rmdir (const char *name){  const char *basename;  int namelen;  struct m_inode *dir, *inode;  struct buffer_head *bh;  struct dir_entry *de;// 如果不是超級用戶,則返回訪問許可出錯碼。  if (!suser ())    return -EPERM;// 如果找不到對應路徑名目錄的i 節點,則返回出錯碼。  if (!(dir = dir_namei (name, &namelen, &basename)))    return -ENOENT;// 如果最頂端的文件名長度為0,則說明給出的路徑名最后沒有指定文件名,釋放該目錄i 節點,返回// 出錯碼,退出。  if (!namelen)    {      iput (dir);      return -ENOENT;    }// 如果在該目錄中沒有寫的權限,則釋放該目錄的i 節點,返回訪問許可出錯碼,退出。  if (!permission (dir, MAY_WRITE))    {      iput (dir);      return -EPERM;    }// 如果對應路徑名上最后的文件名的目錄項不存在,則釋放包含該目錄項的高速緩沖區,釋放目錄// 的i 節點,返回文件已經存在出錯碼,退出。否則dir 是包含要被刪除目錄名的目錄i 節點,de// 是要被刪除目錄的目錄項結構。  bh = find_entry (&dir, basename, namelen, &de);  if (!bh)    {      iput (dir);      return -ENOENT;    }// 取該目錄項指明的i 節點。若出錯則釋放目錄的i 節點,并釋放含有目錄項的高速緩沖區,返回// 出錯號。  if (!(inode = iget (dir->i_dev, de->inode)))    {      iput (dir);      brelse (bh);      return -EPERM;    }// 若該目錄設置了受限刪除標志并且進程的有效用戶id 不等于該i 節點的用戶id,則表示沒有權限刪// 除該目錄,于是釋放包含要刪除目錄名的目錄i 節點和該要刪除目錄的i 節點,釋放高速緩沖區,返// 回出錯碼。  if ((dir->i_mode & S_ISVTX) && current->euid &&      inode->i_uid != current->euid)    {      iput (dir);      iput (inode);      brelse (bh);      return -EPERM;    }// 如果要被刪除的目錄項的i 節點的設備號不等于包含該目錄項的目錄的設備號,或者該被刪除目錄的// 引用連接計數大于1(表示有符號連接等),則不能刪除該目錄,于是釋放包含要刪除目錄名的目錄// i 節點和該要刪除目錄的i 節點,釋放高速緩沖區,返回出錯碼。  if (inode->i_dev != dir->i_dev || inode->i_count > 1)    {      iput (dir);      iput (inode);      brelse (bh);      return -EPERM;    }// 如果要被刪除目錄的目錄項i 節點的節點號等于包含該需刪除目錄的i 節點號,則表示試圖刪除"."// 目錄。于是釋放包含要刪除目錄名的目錄i 節點和該要刪除目錄的i 節點,釋放高速緩沖區,返回// 出錯碼。  if (inode == dir)    {				/* we may not delete ".", but "../dir" is ok */      iput (inode);		/* 我們不可以刪除".",但可以刪除"../dir" */      iput (dir);      brelse (bh);      return -EPERM;    }// 若要被刪除的目錄的i 節點的屬性表明這不是一個目錄,則釋放包含要刪除目錄名的目錄i 節點和// 該要刪除目錄的i 節點,釋放高速緩沖區,返回出錯碼。  if (!S_ISDIR (inode->i_mode))    {      iput (inode);      iput (dir);      brelse (bh);      return -ENOTDIR;    }// 若該需被刪除的目錄不空,則釋放包含要刪除目錄名的目錄i 節點和該要刪除目錄的i 節點,釋放// 高速緩沖區,返回出錯碼。  if (!empty_dir (inode))    {      iput (inode);      iput (dir);      brelse (bh);      return -ENOTEMPTY;    }// 若該需被刪除目錄的i 節點的連接數不等于2,則顯示警告信息。  if (inode->i_nlinks != 2)    printk ("empty directory has nlink!=2 (%d)", inode->i_nlinks);// 置該需被刪除目錄的目錄項的i 節點號字段為0,表示該目錄項不再使用,并置含有該目錄項的高速// 緩沖區已修改標志,并釋放該緩沖區。  de->inode = 0;  bh->b_dirt = 1;  brelse (bh);// 置被刪除目錄的i 節點的連接數為0,并置i 節點已修改標志。  inode->i_nlinks = 0;  inode->i_dirt = 1;// 將包含被刪除目錄名的目錄的i 節點引用計數減1,修改其改變時間和修改時間為當前時間,并置// 該節點已修改標志。  dir->i_nlinks--;  dir->i_ctime = dir->i_mtime = CURRENT_TIME;  dir->i_dirt = 1;// 最后釋放包含要刪除目錄名的目錄i 節點和該要刪除目錄的i 節點,返回0(成功)。  iput (dir);  iput (inode);  return 0;}//// 系統調用函數 - 刪除文件名以及可能也刪除其相關的文件。// 從文件系統刪除一個名字。如果是一個文件的最后一個連接,并且沒有進程正打開該文件,則該文件// 也將被刪除,并釋放所占用的設備空間。// 參數:name - 文件名。// 返回:成功則返回0,否則返回出錯號。intsys_unlink (const char *name){  const char *basename;  int namelen;  struct m_inode *dir, *inode;  struct buffer_head *bh;  struct dir_entry *de;// 如果找不到對應路徑名目錄的i 節點,則返回出錯碼。  if (!(dir = dir_namei (name, &namelen, &basename)))    return -ENOENT;// 如果最頂端的文件名長度為0,則說明給出的路徑名最后沒有指定文件名,釋放該目錄i 節點,返回// 出錯碼,退出。  if (!namelen)    {      iput (dir);      return -ENOENT;    }// 如果在該目錄中沒有寫的權限,則釋放該目錄的i 節點,返回訪問許可出錯碼,退出。  if (!permission (dir, MAY_WRITE))    {      iput (dir);      return -EPERM;    }// 如果對應路徑名上最后的文件名的目錄項不存在,則釋放包含該目錄項的高速緩沖區,釋放目錄// 的i 節點,返回文件已經存在出錯碼,退出。否則dir 是包含要被刪除目錄名的目錄i 節點,de// 是要被刪除目錄的目錄項結構。  bh = find_entry (&dir, basename, namelen, &de);  if (!bh)    {      iput (dir);      return -ENOENT;    }// 取該目錄項指明的i 節點。若出錯則釋放目錄的i 節點,并釋放含有目錄項的高速緩沖區,返回// 出錯號。  if (!(inode = iget (dir->i_dev, de->inode)))    {      iput (dir);      brelse (bh);      return -ENOENT;    }// 如果該目錄設置了受限刪除標志并且用戶不是超級用戶,并且進程的有效用戶id 不等于被刪除文件// 名i 節點的用戶id,并且進程的有效用戶id 也不等于目錄i 節點的用戶id,則沒有權限刪除該文件// 名。則釋放該目錄i 節點和該文件名目錄項的i 節點,釋放包含該目錄項的緩沖區,返回出錯號。  if ((dir->i_mode & S_ISVTX) && !suser () &&      current->euid != inode->i_uid && current->euid != dir->i_uid)    {      iput (dir);      iput (inode);      brelse (bh);      return -EPERM;    }// 如果該指定文件名是一個目錄,則也不能刪除,釋放該目錄i 節點和該文件名目錄項的i 節點,釋放// 包含該目錄項的緩沖區,返回出錯號。  if (S_ISDIR (inode->i_mode))    {      iput (inode);      iput (dir);      brelse (bh);      return -EPERM;    }// 如果該i 節點的連接數已經為0,則顯示警告信息,修正其為1。  if (!inode->i_nlinks)    {      printk ("Deleting nonexistent file (%04x:%d), %d\n",	      inode->i_dev, inode->i_num, inode->i_nlinks);      inode->i_nlinks = 1;    }// 將該文件名的目錄項中的i 節點號字段置為0,表示釋放該目錄項,并設置包含該目錄項的緩沖區// 已修改標志,釋放該高速緩沖區。  de->inode = 0;  bh->b_dirt = 1;  brelse (bh);// 該i 節點的連接數減1,置已修改標志,更新改變時間為當前時間。最后釋放該i 節點和目錄的i 節// 點,返回0(成功)。  inode->i_nlinks--;  inode->i_dirt = 1;  inode->i_ctime = CURRENT_TIME;  iput (inode);  iput (dir);  return 0;}//// 系統調用函數 - 為文件建立一個文件名。// 為一個已經存在的文件創建一個新連接(也稱為硬連接 - hard link)。// 參數:oldname - 原路徑名;newname - 新的路徑名。// 返回:若成功則返回0,否則返回出錯號。intsys_link (const char *oldname, const char *newname){  struct dir_entry *de;  struct m_inode *oldinode, *dir;  struct buffer_head *bh;  const char *basename;  int namelen;// 取原文件路徑名對應的i 節點oldinode。如果為0,則表示出錯,返回出錯號。  oldinode = namei (oldname);  if (!oldinode)    return -ENOENT;// 如果原路徑名對應的是一個目錄名,則釋放該i 節點,返回出錯號。  if (S_ISDIR (oldinode->i_mode))    {      iput (oldinode);      return -EPERM;    }// 查找新路徑名的最頂層目錄的i 節點,并返回最后的文件名及其長度。如果目錄的i 節點沒有找到,// 則釋放原路徑名的i 節點,返回出錯號。  dir = dir_namei (newname, &namelen, &basename);  if (!dir)    {      iput (oldinode);      return -EACCES;    }// 如果新路徑名中不包括文件名,則釋放原路徑名i 節點和新路徑名目錄的i 節點,返回出錯號。  if (!namelen)    {      iput (oldinode);      iput (dir);      return -EPERM;    }// 如果新路徑名目錄的設備號與原路徑名的設備號不一樣,則也不能建立連接,于是釋放新路徑名// 目錄的i 節點和原路徑名的i 節點,返回出錯號。  if (dir->i_dev != oldinode->i_dev)    {      iput (dir);      iput (oldinode);      return -EXDEV;    }// 如果用戶沒有在新目錄中寫的權限,則也不能建立連接,于是釋放新路徑名目錄的i 節點和原路徑名// 的i 節點,返回出錯號。  if (!permission (dir, MAY_WRITE))    {      iput (dir);      iput (oldinode);      return -EACCES;    }// 查詢該新路徑名是否已經存在,如果存在,則也不能建立連接,于是釋放包含該已存在目錄項的高速// 緩沖區,釋放新路徑名目錄的i 節點和原路徑名的i 節點,返回出錯號。  bh = find_entry (&dir, basename, namelen, &de);  if (bh)    {      brelse (bh);      iput (dir);      iput (oldinode);      return -EEXIST;    }// 在新目錄中添加一個目錄項。若失敗則釋放該目錄的i 節點和原路徑名的i 節點,返回出錯號。  bh = add_entry (dir, basename, namelen, &de);  if (!bh)    {      iput (dir);      iput (oldinode);      return -ENOSPC;    }// 否則初始設置該目錄項的i 節點號等于原路徑名的i 節點號,并置包含該新添目錄項的高速緩沖區// 已修改標志,釋放該緩沖區,釋放目錄的i 節點。  de->inode = oldinode->i_num;  bh->b_dirt = 1;  brelse (bh);  iput (dir);// 將原節點的應用計數加1,修改其改變時間為當前時間,并設置i 節點已修改標志,最后釋放原// 路徑名的i 節點,并返回0(成功)。  oldinode->i_nlinks++;  oldinode->i_ctime = CURRENT_TIME;  oldinode->i_dirt = 1;  iput (oldinode);  return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
七七婷婷婷婷精品国产| 亚洲靠逼com| 色综合 综合色| 美女久久久精品| 亚洲成人先锋电影| 综合网在线视频| 亚洲国产精品精华液2区45| 欧美成人精品高清在线播放| 91福利视频久久久久| 日精品一区二区三区| 一区二区三区日韩| 日韩理论片网站| 综合激情成人伊人| 国产精品天天看| 国产丝袜美腿一区二区三区| 精品国一区二区三区| 欧美一区二区三区思思人| 欧美日韩国产首页| 在线成人高清不卡| 欧美久久免费观看| 欧美日韩一卡二卡三卡| 欧美在线观看视频在线| 欧美性猛交xxxxxxxx| 在线精品视频小说1| 欧美最猛黑人xxxxx猛交| 99国产精品99久久久久久| 91在线你懂得| 欧美日韩黄视频| 欧美三区在线视频| 欧美伦理视频网站| 777a∨成人精品桃花网| 欧美日韩一区二区三区在线看| 欧美日韩在线观看一区二区| 欧美福利一区二区| 2021中文字幕一区亚洲| 久久久久久久久久久久久久久99| 国产精品麻豆视频| 亚洲愉拍自拍另类高清精品| 亚洲一区影音先锋| 蜜桃一区二区三区在线| 精品一区二区三区视频在线观看 | 色婷婷综合久久久久中文| 91农村精品一区二区在线| 欧美在线一区二区三区| 日韩欧美一级片| 国产精品素人视频| 亚洲一区二区精品久久av| 亚洲日本在线看| 亚洲gay无套男同| 国产盗摄精品一区二区三区在线| 91视频免费播放| 日韩欧美一级片| 中文字幕一区二区不卡| 亚洲动漫第一页| 丰满少妇久久久久久久| 欧美区在线观看| 国产亚洲一本大道中文在线| 亚洲黄色小说网站| 国产在线观看免费一区| 欧美无人高清视频在线观看| 欧美麻豆精品久久久久久| 欧美国产1区2区| 日本亚洲视频在线| 国产成人av影院| 日韩你懂的在线播放| 一区二区三区在线高清| 国产一区二区三区在线看麻豆| 在线观看一区二区精品视频| 国产亚洲一区二区三区在线观看| 香蕉久久一区二区不卡无毒影院 | 美女被吸乳得到大胸91| 色婷婷综合久色| 成人深夜视频在线观看| 午夜精品爽啪视频| 国产欧美日韩综合精品一区二区 | 亚洲v日本v欧美v久久精品| 在线看一区二区| 日韩免费观看2025年上映的电影| 91网站在线播放| 国产亚洲精品aa| 天天综合网 天天综合色| 波多野结衣亚洲一区| xnxx国产精品| 石原莉奈在线亚洲三区| 欧美色图天堂网| 亚洲欧洲成人自拍| 成人一区二区三区视频| 久久久久国产精品厨房| 狠狠色丁香久久婷婷综| 欧美一区二区视频在线观看2020 | 欧美96一区二区免费视频| 日本不卡不码高清免费观看| 色激情天天射综合网| 欧美激情一区二区在线| 久久99久久99精品免视看婷婷| 欧美久久婷婷综合色| 亚洲国产成人午夜在线一区| 精品综合免费视频观看| 精品国产污污免费网站入口 | 欧美一区二区成人6969| 一区二区三区国产精华| 色88888久久久久久影院按摩| 18欧美乱大交hd1984| 一本到不卡精品视频在线观看| 欧美国产日韩在线观看| 波多野结衣中文字幕一区| 国产色91在线| 99久久伊人精品| 亚洲精品菠萝久久久久久久| 欧美又粗又大又爽| 日韩和欧美一区二区| 日韩视频在线永久播放| 久久福利资源站| 久久九九国产精品| av不卡免费电影| 中文字幕一区二区三区不卡在线| 色综合天天综合网天天看片| 亚洲国产aⅴ成人精品无吗| 777xxx欧美| 高清免费成人av| 午夜精品久久久久久久99樱桃 | 亚洲日穴在线视频| 欧美午夜电影网| 日本人妖一区二区| 日韩一级黄色大片| 久久精品久久99精品久久| 国产精品天干天干在线综合| 欧美天堂一区二区三区| 美女久久久精品| 国产精品乱人伦| 欧美日韩国产影片| 久久成人免费网| 中文字幕一区二区三区不卡在线| 欧美高清视频在线高清观看mv色露露十八 | 亚洲丝袜另类动漫二区| 精品电影一区二区| 91精品国产综合久久精品app| av电影在线观看完整版一区二区| 极品少妇xxxx偷拍精品少妇| 亚洲第一久久影院| 亚洲综合网站在线观看| 亚洲免费色视频| 中文字幕欧美一区| 国产欧美日本一区视频| 亚洲精品一线二线三线| 欧美三区在线视频| 欧美三级视频在线播放| 日本精品裸体写真集在线观看| 成人免费毛片嘿嘿连载视频| 国产成人精品一区二 | 国产精品每日更新在线播放网址| 精品国产乱码久久久久久蜜臀| 日韩亚洲欧美中文三级| 制服丝袜中文字幕亚洲| 777久久久精品| 日韩写真欧美这视频| 日韩精品一区二区三区在线观看 | 99麻豆久久久国产精品免费| 国产激情视频一区二区三区欧美| 国产美女娇喘av呻吟久久| 国产一区不卡视频| 国产福利一区二区三区| 成人开心网精品视频| 99视频国产精品| 在线观看亚洲精品| 3d动漫精品啪啪| 久久网站最新地址| 国产精品视频一二三| 亚洲视频狠狠干| 夜色激情一区二区| 午夜私人影院久久久久| 美国毛片一区二区| 国产一区二区三区免费观看| 国产99精品视频| 色综合天天视频在线观看| 欧美日韩高清不卡| 久久嫩草精品久久久久| 国产精品国产三级国产普通话三级| 国产精品国产精品国产专区不片| 日本不卡的三区四区五区| 亚洲视频免费观看| 亚洲.国产.中文慕字在线| 久久99精品国产麻豆婷婷| 国产乱码精品一区二区三区av| 成人激情免费电影网址| 欧美日韩免费高清一区色橹橹| 精品国产一区久久| 国产精品视频免费| 亚洲成人7777| 国产99精品国产| 欧美丰满高潮xxxx喷水动漫| 久久精品夜色噜噜亚洲aⅴ| 亚洲裸体xxx| 国产精品888| 欧美绝品在线观看成人午夜影视| 久久久不卡影院| 亚洲一区二区视频| 粉嫩嫩av羞羞动漫久久久| 欧美日韩国产精选| 国产精品天美传媒沈樵|