readdir()のd_reclen

readdir()が返すdirentの d_reclenフィールドなんだけど、ナんのサイズなんだろうとか、今まで気にもしていなかったんだけど気になりだすと気になって仕方ない。

     _example.so:: inode: 2007169, offset: 2147483647, len:      24, type: regula
       example.c:: inode: 2007166, offset:  446725204, len:      24, type: regula
       example.i:: inode: 2007167, offset: 1825080369, len:      24, type: regula
      example.py:: inode: 2007168, offset:  225954371, len:      24, type: regula
  example_wrap.c:: inode: 2007165, offset:  635765763, len:      28, type: regula
delegate_test.cs:: inode: 2007176, offset:  844397602, len:      28, type: regula
          try.cs:: inode: 2007180, offset: 1850912454, len:      20, type: regula

てな感じ(きっと勘のいい人なら既にここでわかってしまうんだろう・・・)。

-rwxr-xr-x 1 kuro kuro 35126 2007-10-09 12:08 _example.so
-rw-r--r-- 1 kuro kuro   236 2007-10-09 12:01 example.c
-rw-r--r-- 1 kuro kuro   304 2007-10-09 12:08 example.i
-rw-r--r-- 1 kuro kuro  1674 2007-10-09 15:50 example.py
-rw-r--r-- 1 kuro kuro 95360 2007-10-09 15:50 example_wrap.c
-rw-r--r-- 1 kuro kuro   198 2007-10-11 11:06 decimal.cs
-rw-r--r-- 1 kuro kuro   351 2007-10-11 11:29 delegate_test.cs

実ファイルサイズとは全然関係なさそう。悩む前にカーネルソースを見てしまった。

 // fs/readdir.c - line 149
	int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 2, sizeof(long));

なんだよdirent自体のサイズか。これって record length・・・というのか。。。 entlenとか。。。いや、もっとわかんないか。
確かにこうなった。

                                       D:: inode: 1419992, offset: 1583043187, reclen:      16, type: direct
                                      DD:: inode: 1419993, offset: 1666283364, reclen:      16, type: direct
                                     DDD:: inode: 1419994, offset:   21093361, reclen:      16, type: direct
                                    DDDD:: inode: 1419995, offset: 2147483647, reclen:      16, type: direct
                                   DDDDD:: inode: 1419996, offset:  934741300, reclen:      20, type: direct
                                  DDDDDD:: inode: 1419997, offset:  923284620, reclen:      20, type: direct
                                 DDDDDDD:: inode: 1419998, offset: 1808362381, reclen:      20, type: direct
                                DDDDDDDD:: inode: 1419999, offset: 1447304835, reclen:      20, type: direct
                               DDDDDDDDD:: inode: 1420000, offset: 1810308308, reclen:      24, type: direct
                              DDDDDDDDDD:: inode: 1420001, offset:  902093765, reclen:      24, type: direct
                             DDDDDDDDDDD:: inode: 1420002, offset: 2050576679, reclen:      24, type: direct
                            DDDDDDDDDDDD:: inode: 1420003, offset: 1441011620, reclen:      24, type: direct
                           DDDDDDDDDDDDD:: inode: 1420004, offset: 1560707401, reclen:      28, type: direct
                          DDDDDDDDDDDDDD:: inode: 1420005, offset:  264453376, reclen:      28, type: direct
                         DDDDDDDDDDDDDDD:: inode: 1420006, offset: 2012088305, reclen:      28, type: direct
                        DDDDDDDDDDDDDDDD:: inode: 1420007, offset:  545399702, reclen:      28, type: direct
                       DDDDDDDDDDDDDDDDD:: inode: 1420008, offset: 1349153386, reclen:      32, type: direct
                      DDDDDDDDDDDDDDDDDD:: inode: 1420009, offset: 1304388095, reclen:      32, type: direct
                     DDDDDDDDDDDDDDDDDDD:: inode: 1420010, offset:   15462277, reclen:      32, type: direct
                    DDDDDDDDDDDDDDDDDDDD:: inode: 1420011, offset: 2042488419, reclen:      32, type: direct
                   DDDDDDDDDDDDDDDDDDDDD:: inode: 1420012, offset:  908934656, reclen:      36, type: direct
                  DDDDDDDDDDDDDDDDDDDDDD:: inode: 1420013, offset: 1049386901, reclen:      36, type: direct
                 DDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420014, offset: 2016688392, reclen:      36, type: direct
                DDDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420015, offset:  838188875, reclen:      36, type: direct
               DDDDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420016, offset:  111327874, reclen:      40, type: direct
              DDDDDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420017, offset: 1490345728, reclen:      40, type: direct
             DDDDDDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420018, offset:  686265667, reclen:      40, type: direct
            DDDDDDDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420019, offset: 1130391025, reclen:      40, type: direct
           DDDDDDDDDDDDDDDDDDDDDDDDDDDDD:: inode: 1420020, offset: 1217789290, reclen:      44, type: direct

もう少し悩んでから解答ミロよ>自分。
とか思って余計に自分が情けなくなった。
追記:
更に、manを見ると

               unsigned short d_reclen;    /* length of this record */

書いてあるじゃん・・・
もっともっと自分が情けなくなった。