commit | 9f8aedb12d51c30a14e398ec5b9910586a8c8b93 | [log] [tgz] |
---|---|---|
author | Steven Moreland <smoreland@google.com> | Thu Mar 25 22:58:57 2021 +0000 |
committer | Steven Moreland <smoreland@google.com> | Mon Mar 29 17:16:59 2021 +0000 |
tree | 19b4527e26c9fd2c3eea1e8a364909cc2bdd97c8 | |
parent | 19ad64054fa63ad21bd9e4957abfec9dd2659a71 [diff] |
delegate copy/move cnstrs to stop safe_union leak The safe union assign/move constructors delegate to the base safe_union constructor. However, they failed to deconstruct the object that this base constructor makes. This went unnoticed since most HIDL objects don't allocate any memory on the heap in their base constructor. However, hidl_memory does allocate something. In order to fix this problem and also simplify the generaed code, the copy and move constructors for HIDL safe_unions now delegate to assignment operators. Bug: 179720143 Test: atest hidl_test Change-Id: I4d1513ed0b1a2dec801f1732428b7a8f615c1e8a
Full documentation can be found here: https://source.android.com/devices/architecture/hidl/
hidl-gen is a compiler for the HIDL (HAL Interface Design Language) which generates C++ and Java endpoints for RPC mechanisms. The main userspace libraries which this compiler uses can be found at system/libhidl.
m hidl-gen
Note that options for hidl-gen expected to be invoked by the build system are marked with 'internal' in the help menu.
hidl-gen -h hidl-gen -o output -L c++-impl -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transport android.hardware.nfc@1.0
Some defaults for package roots are also provided
hidl-gen -o output -L c++-impl android.hardware.nfc@1.0 hidl-gen -o output -L vts android.hardware.nfc@1.0 hidl-gen -L hash android.hardware.nfc@1.0
Example command for vendor project
hidl-gen -L c++-impl -r vendor.foo:vendor/foo/interfaces vendor.foo.nfc@1.0
See update-makefiles-helper.sh and update-all-google-makefiles.sh for examples of how to generate HIDL makefiles (using the -Landroidbp option).
NOTE: When using the -Landroidbp option, you can force generated modules to be installed in
/system_ext
rather than other partition by putting a marker file.hidl_for_system_ext
alongside*.hal
files.
NOTE: You can also install the vendor variant of the generated modules to be installed in
/odm
rather than/vendor
by putting a marker file.hidl_for_odm
alongside*.hal
files.
This is a helper tool to convert C headers to valid .hal files.
m c2hal && c2hal -h