麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

grub2中env綁定hook函數(shù)

2019-11-09 17:24:46
字體:
供稿:網(wǎng)友
在調(diào)用grub_env_get 獲取環(huán)境變量的時候,可以對這個環(huán)境變量綁定一個處理函數(shù)。grub_env_get (const char *name){  struct grub_env_var *var;  var = grub_env_find (name);  if (! var)    return 0;  if (var->read_hook)    return var->read_hook (var, var->value);  return var->value;}例如grub_env_get 中如果通過grub_env_find 找到這個env的話,會判斷是否綁定read_hook 函數(shù),如果綁定就返回read_hook。這個感覺和grub_register_command 有一曲通過的效果。static const char *grub_datetime_names[] ={  "YEAR",  "MONTH",  "DAY",  "HOUR",  "MINUTE",  "SECOND",  "WEEKDAY",};GRUB_MOD_INIT(datehook){  unsigned i;  for (i = 0; i < ARRAY_SIZE (grub_datetime_names); i++)    {      grub_register_variable_hook (grub_datetime_names[i],                   grub_read_hook_datetime, 0);      grub_env_export (grub_datetime_names[i]);    }}這個例子會對注冊在grub_datetime_names 中的每一個字符串綁定一個grub_read_hook_datetime 函數(shù),這樣當(dāng)調(diào)用grub_get_env("YEAR")的時候就會調(diào)用grub_read_hook_datetime函數(shù)grub_read_hook_datetime (struct grub_env_var *var,                         const char *val __attribute__ ((unused))){  struct grub_datetime datetime;  static char buf[6];  buf[0] = 0;  if (! grub_get_datetime (&datetime))    {      int i;      for (i = 0; i < 7; i++)        if (grub_strcmp (var->name, grub_datetime_names[i]) == 0)          {            int n;            switch (i)              {              case 0:                n = datetime.year;                break;    }  return buf;}grub_read_hook_datetime的實現(xiàn)也很簡單,就是返回具體對應(yīng)的時間.grub_register_variable_hook (const char *name,                 grub_env_read_hook_t read_hook,                 grub_env_write_hook_t write_hook){  struct grub_env_var *var = grub_env_find (name);  if (! var)    {      if (grub_env_set (name, "") != GRUB_ERR_NONE)    return grub_errno;      var = grub_env_find (name);      /* XXX Insert an assertion?  */    }  var->read_hook = read_hook;  var->write_hook = write_hook;  return GRUB_ERR_NONE;}而grub_register_variable_hook 則首先通過grub_env_find 找到這個env,如果沒有找到則不綁定,也就是說在調(diào)用grub_register_variable_hook 之前必須調(diào)用grub_env_set 函數(shù)先設(shè)定環(huán)境變量.
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精精品 | 99精品视频在线免费观看 | 夜夜夜精品视频 | av在线电影网站 | av在线免费网 | 一级免费黄色免费片 | 一级黄色免费大片 | 久久精品一区二区三区不卡牛牛 | 黄色av一区二区三区 | av电影在线播放 | 国产一区不卡 | 欧美视频在线一区二区三区 | 网站激情 | 日本在线视频免费 | 日韩视频―中文字幕 | 国产91亚洲精品一区二区三区 | 最新午夜综合福利视频 | 911精品影院在线观看 | 日韩精品网站在线观看 | 91成人免费在线观看 | 一级电影在线观看 | 精品一区二区三区四区在线 | 欧美成人精品不卡视频在线观看 | 操操操日日日干干干 | 免费亚洲视频在线观看 | 91精品国产成人 | www.99xxxx.com| 欧美福利视频一区二区 | 又黄又爽又色无遮挡免费 | 天天草天天干天天 | 成人毛片在线免费观看 | 欧美一级小视频 | 久久精精品 | 亚洲特黄a级毛片在线播放 久久久入口 | videos真实高潮xxxx | 日韩在线欧美在线 | 欧美1—12sexvideos | 日韩av日韩 | 欧美综合日韩 | 久久影院一区二区三区 | 久久成人在线观看 |