Add DT_UNKNOWN handling

Problem: With particular file system, d_type is not supported and the
value will be DT_UNKNOWN.

As readdir(3) states:
     Currently, only some filesystems (among them: Btrfs, ext2, ext3,
     and ext4) have full support for returning the file type in d_type.
     All applications must properly handle a return of DT_UNKNOWN.
Reference: http://man7.org/linux/man-pages/man3/readdir.3.html

Solution: If d_type is DT_UNKNOWN, use lstat(2) to check file mode.

Bug: 76443731

Test: With Linux kernel 4.16-rc5, overlayfs exported with NFSv3, d_type
is not supported. We verified the solution with above environment, and
build is passed with the patch. On the contrary, we get build
errors if without the solution.
Test: ./test/run_all_host_tests.sh (on ext4)

Change-Id: Ide175a301f7c4b8dc1106072fee1ff809e8fd5c4
1 file changed
tree: b373ed2562710724031e55ef0ff5acf0abd3c052
  1. build/
  2. c2hal/
  3. docs/
  4. include_hash/
  5. test/
  6. utils/
  7. .clang-format
  8. Android.bp
  9. Annotation.cpp
  10. Annotation.h
  11. ArrayType.cpp
  12. ArrayType.h
  13. AST.cpp
  14. AST.h
  15. CleanSpec.mk
  16. CompoundType.cpp
  17. CompoundType.h
  18. ConstantExpression.cpp
  19. ConstantExpression.h
  20. Coordinator.cpp
  21. Coordinator.h
  22. DeathRecipientType.cpp
  23. DeathRecipientType.h
  24. EnumType.cpp
  25. EnumType.h
  26. FmqType.cpp
  27. FmqType.h
  28. generateCpp.cpp
  29. generateCppAdapter.cpp
  30. generateCppImpl.cpp
  31. generateJava.cpp
  32. generateVts.cpp
  33. HandleType.cpp
  34. HandleType.h
  35. Hash.cpp
  36. hidl-gen_l.h
  37. hidl-gen_l.ll
  38. hidl-gen_y.yy
  39. HidlTypeAssertion.cpp
  40. HidlTypeAssertion.h
  41. Interface.cpp
  42. Interface.h
  43. Location.cpp
  44. Location.h
  45. main.cpp
  46. MemoryType.cpp
  47. MemoryType.h
  48. Method.cpp
  49. Method.h
  50. MODULE_LICENSE_APACHE2
  51. NamedType.cpp
  52. NamedType.h
  53. NOTICE
  54. OWNERS
  55. PointerType.cpp
  56. PointerType.h
  57. PREUPLOAD.cfg
  58. README.md
  59. Reference.h
  60. RefType.cpp
  61. RefType.h
  62. ScalarType.cpp
  63. ScalarType.h
  64. Scope.cpp
  65. Scope.h
  66. StringType.cpp
  67. StringType.h
  68. Type.cpp
  69. Type.h
  70. TypeDef.cpp
  71. TypeDef.h
  72. update-all-google-makefiles.sh
  73. update-makefiles-helper.sh
  74. VectorType.cpp
  75. VectorType.h
README.md

hidl-gen user guide

1. Build

croot
make hidl-gen

2. Run

hidl-gen -o output-path -L language (-r interface-root) fqname

output-path: directory to store the output files.
language: output file for given language. e.g.c++, vts..

fqname: fully qualified name of the input files.
For singe file input, follow the format: package@version::fileName
For directory input, follow the format: package@version

interface-root(optional): prefix and root path for fqname.
If not set, use the default prefix: android.hardware and default root path
defined in $TOP.

examples:

croot
hidl-gen -o output -L c++ -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport android.hardware.nfc@1.0::INfc.hal
hidl-gen -o output -L vts -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport android.hardware.nfc@1.0
hidl-gen -o test -L c++ -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport android.hardware.nfc@1.0
hidl-gen -L hash -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport android.hardware.nfc@1.0