<code id='qhrd9'><strong id='qhrd9'></strong></code>
      <ins id='qhrd9'></ins>

      <span id='qhrd9'></span>
      <dl id='qhrd9'></dl>
      <i id='qhrd9'><div id='qhrd9'><ins id='qhrd9'></ins></div></i>
        1. <tr id='qhrd9'><strong id='qhrd9'></strong><small id='qhrd9'></small><button id='qhrd9'></button><li id='qhrd9'><noscript id='qhrd9'><big id='qhrd9'></big><dt id='qhrd9'></dt></noscript></li></tr><ol id='qhrd9'><table id='qhrd9'><blockquote id='qhrd9'><tbody id='qhrd9'></tbody></blockquote></table></ol><u id='qhrd9'></u><kbd id='qhrd9'><kbd id='qhrd9'></kbd></kbd>
        2. <i id='qhrd9'></i>

            <fieldset id='qhrd9'></fieldset>

            <acronym id='qhrd9'><em id='qhrd9'></em><td id='qhrd9'><div id='qhrd9'></div></td></acronym><address id='qhrd9'><big id='qhrd9'><big id='qhrd9'></big><legend id='qhrd9'></legend></big></address>

            Linux操作系统内核中的指针和错误值

            • 时间:
            • 浏览:6
            • 来源:124软件资讯网

              在内核的代码和驱动法式中经常见到ERR_PTR, IS_ERR, PTR_ERR这三个内联函数 。

              许多的内核函数需要返回一个指针 ,可是函数的挪用可能失败 ,一样平常我们处置惩罚这样的情形都是返回一个NULL指针 ,就像malloc或kmalloc在没有获得指定的空间申请时的返回值一样  。可是有时我们想知道导致函数失败的缘故原由 ,可是返回NULL就显得信息不够 。因此有些函数返回一个现实的错误编码以便对引起错误的缘故原由做一些处置惩罚  。许多内核接口通过把错误值编码到一个指针值中来返回错误信息  。当处置惩罚这样的函数时  ,判断是否乐成挪用就不能是简朴的和NULL举行比力  。为了利便使用这样的类型接口 ,2.6的内核在linux/err.h中实现了三个内联函数:

              inline void *ERR_PTR(long error)
              {
              return (void *) error;
              }

              返回指针类型的函数可以通过这个函数来返回一个错误值  。这里的error是通常的负的错误编码  。挪用者可以使用IS_ERR来检查所返回的指针是否是一个错误编码 。

              inline long IS_ERR(const void *ptr)
              {
              return (unsigned long)ptr > (unsigned long)-1000L;
              }

              若是需要现实的错误编码  ,可以通过PTR_ERR函数提取

              inline long PTR_ERR(const void *ptr)
              {
              return (long) ptr;
              }

              只有在IS_ERR返回真的时间才气使用PTR_ERR