fwupd/libfwupdplugin
Richard Hughes cf9ebdb703 Add startup profiling functionality
Using `sudo FWUPD_PROFILE=10 ./src/fwupd --verbose` will print a
dump of startup times onto the console so that we can debug which
plugin is slowing down system startup. For example:

    ../src/fu-engine.c:5409:plugins-coldplug [108.55ms]:
        ../plugins/amt/fu-plugin-amt.c:437:amt [27.14ms]:
            :create-context [12.66ms]
            :get-version [8.44ms]
            :add-device [3.95ms]
2022-06-14 22:08:02 +01:00
..
tests Unexport fu_common_firmware_builder() 2022-06-14 14:36:52 -05:00
fu-archive-firmware.c archive: Add writing support 2022-05-21 08:21:55 -04:00
fu-archive-firmware.h archive: Add writing support 2022-05-21 08:21:55 -04:00
fu-archive.c trivial: Fix docstring for fu_archive_write() 2022-05-22 11:28:25 +01:00
fu-archive.h archive: Add writing support 2022-05-21 08:21:55 -04:00
fu-backend.c trivial: gi-docgenize some of the function comments 2022-06-14 14:36:52 -05:00
fu-backend.h Add FuProgress to ->startup() and ->coldplug() 2022-06-04 20:21:50 +01:00
fu-bluez-device.c Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-bluez-device.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-byte-array.c trivial: Remove fu_byte_array_set_size_full() 2022-06-14 14:36:52 -05:00
fu-byte-array.h trivial: Remove fu_byte_array_set_size_full() 2022-06-14 14:36:52 -05:00
fu-bytes.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-bytes.h Split out the GByte helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-cabinet.c Remove fu_strtoull_full() 2022-06-14 14:36:52 -05:00
fu-cabinet.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-cfi-device.c Remove fu_strtoull_full() 2022-06-14 14:36:52 -05:00
fu-cfi-device.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-cfu-common.c trivial: Fix typos 2022-05-21 13:49:36 -04:00
fu-cfu-common.h trivial: Export the CFU enum conversion functions 2021-09-25 21:16:18 +01:00
fu-cfu-offer.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-cfu-offer.h Add FuCfuPayload and FuCfuOffer 2021-09-20 14:43:34 +01:00
fu-cfu-payload.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-cfu-payload.h Add FuCfuPayload and FuCfuOffer 2021-09-20 14:43:34 +01:00
fu-chunk-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-chunk.c Split out the GByte helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-chunk.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-common-darwin.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-common-freebsd.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-common-guid.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-common-guid.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-common-linux.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-common-private.h Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-common-windows.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-common.c Remove the 'common' prefix from the volume creation methods 2022-06-14 14:36:52 -05:00
fu-common.h Remove the 'common' prefix from the volume creation methods 2022-06-14 14:36:52 -05:00
fu-context-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-context.c Move the battery attributes down into libfwupd 2022-05-18 07:16:07 +01:00
fu-context.h Do not allow UEFI updates when the lid is closed 2021-12-29 19:18:26 +00:00
fu-coswid-firmware.c Support firmware with uSWID header version 2 2022-04-18 17:48:52 +01:00
fu-coswid-firmware.h Add coSWID and uSWID parsers to libfwupdplugin 2022-03-15 14:37:02 +00:00
fu-crc.c Split out the CRC and sum functions to new source files 2022-06-14 14:36:52 -05:00
fu-crc.h Split out the CRC and sum functions to new source files 2022-06-14 14:36:52 -05:00
fu-deprecated.h Install development files for libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-device-locker.c trivial: Do not check the device superclass when closing 2021-12-02 16:21:29 +00:00
fu-device-locker.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-device-metadata.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-device-private.h trivial: Fix recently introduced gtkdoc warning 2021-10-29 11:38:04 +01:00
fu-device.c Copy the possible plugins when incorporating 2022-06-14 21:01:57 +01:00
fu-device.h Remove the 'common' prefix from the volume creation methods 2022-06-14 14:36:52 -05:00
fu-dfu-firmware-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-dfu-firmware.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-dfu-firmware.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-dfuse-firmware.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-dfuse-firmware.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-dump.c Split out the dump helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-dump.h Split out the dump helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-common.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-efi-common.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-efi-firmware-common.c Split out the GByte helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-firmware-common.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-firmware-file.c trivial: gi-docgenize some of the function comments 2022-06-14 14:36:52 -05:00
fu-efi-firmware-file.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-firmware-filesystem.c Split out the GByte helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-firmware-filesystem.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-firmware-section.c trivial: gi-docgenize some of the function comments 2022-06-14 14:36:52 -05:00
fu-efi-firmware-section.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-firmware-volume.c trivial: Remove fu_byte_array_set_size_full() 2022-06-14 14:36:52 -05:00
fu-efi-firmware-volume.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-signature-list.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efi-signature-list.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-efi-signature-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-efi-signature.c Allow patching firmware files at known offsets 2022-01-05 09:51:45 +00:00
fu-efi-signature.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-efivar-darwin.c Fix build for MacOS 2022-03-15 14:37:28 +00:00
fu-efivar-freebsd.c Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efivar-impl.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-efivar-linux.c Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-efivar-windows.c trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-efivar.c Remove some deprecated API 2022-06-03 13:47:11 -05:00
fu-efivar.h Remove some deprecated API 2022-06-03 13:47:11 -05:00
fu-firmware-common.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-firmware-common.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-firmware.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-firmware.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-fmap-firmware.c trivial: Remove fu_byte_array_set_size_full() 2022-06-14 14:36:52 -05:00
fu-fmap-firmware.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-fuzzer-firmware.c.in trivial: Ignore the return value of setenv() in most cases 2022-04-13 15:08:12 +01:00
fu-fuzzer-main.c trivial: Do not use g_assert() in self test code 2021-09-24 22:20:21 +01:00
fu-hash.py trivial: update python black style to 21.6b0 2021-06-16 06:41:46 -05:00
fu-hid-device.c Split out the dump helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-hid-device.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-hwids.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-hwids.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-i2c-device.c Remove duplicate ->probe() calls to speed up startup by 150ms 2022-06-14 21:01:57 +01:00
fu-i2c-device.h Remove fu_i2c_device_read_full() 2022-06-14 14:36:52 -05:00
fu-ifd-bios.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-ifd-bios.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-ifd-common.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-ifd-common.h trivial: gi-docgenize some of the function comments 2022-06-14 14:36:52 -05:00
fu-ifd-firmware.c trivial: Remove fu_byte_array_set_size_full() 2022-06-14 14:36:52 -05:00
fu-ifd-firmware.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-ifd-image.c trivial: gi-docgenize some of the function comments 2022-06-14 14:36:52 -05:00
fu-ifd-image.h Split out the GByteArray helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-ihex-firmware.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-ihex-firmware.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-io-channel.c trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-io-channel.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-kenv.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-kenv.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-kernel.c Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-kernel.h Split out the kernel helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-mem.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-mem.h Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-mutex.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-path-private.h Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-path.c Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-path.h Split out the path helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-plugin-private.h Add FuProgress to ->startup() and ->coldplug() 2022-06-04 20:21:50 +01:00
fu-plugin-vfuncs.h Speed up the daemon startup by ~2% by doing dlsym much less 2021-11-09 12:02:07 +00:00
fu-plugin.c trivial: gi-docgenize some of the function comments 2022-06-14 14:36:52 -05:00
fu-plugin.h Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-progress.c Add startup profiling functionality 2022-06-14 22:08:02 +01:00
fu-progress.h Add startup profiling functionality 2022-06-14 22:08:02 +01:00
fu-quirks.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-quirks.h trivial: Add quirk definitions for CFI 2022-06-08 07:56:07 +01:00
fu-security-attrs-private.h tpm: Actually add the v1.2 device 2021-11-10 14:08:08 +00:00
fu-security-attrs.c Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-security-attrs.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-self-test.c Add startup profiling functionality 2022-06-14 22:08:02 +01:00
fu-smbios-private.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-smbios.c Remove the now unnecessary fu_smbios_to_string() 2022-06-14 14:36:52 -05:00
fu-smbios.h Remove the now unnecessary fu_smbios_to_string() 2022-06-14 14:36:52 -05:00
fu-srec-firmware.c Split out the string helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-srec-firmware.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-string.c Remove fu_strtoull_full() 2022-06-14 14:36:52 -05:00
fu-string.h Remove fu_strtoull_full() 2022-06-14 14:36:52 -05:00
fu-sum.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-sum.h Split out the CRC and sum functions to new source files 2022-06-14 14:36:52 -05:00
fu-udev-device-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-udev-device.c Copy more properties when doing FuUdevDevice->incorporate 2022-06-14 21:01:57 +01:00
fu-udev-device.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-usb-device-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-usb-device.c Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-usb-device.h Be smarter and include less header files per source file 2022-06-14 14:36:52 -05:00
fu-uswid-firmware.c Split out the memory helpers to a new source file 2022-06-14 14:36:52 -05:00
fu-uswid-firmware.h Support firmware with uSWID header version 2 2022-04-18 17:48:52 +01:00
fu-version-common.c Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-version-common.h Remove the 'common' prefix when parsing version numbers 2022-06-14 14:36:52 -05:00
fu-version.c trivial: Fix a GObjectIntrospection warning by using the correct prefix 2021-08-28 06:50:50 -05:00
fu-version.h.in trivial: Fix a GObjectIntrospection warning by using the correct prefix 2021-08-28 06:50:50 -05:00
fu-volume-private.h trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
fu-volume.c Remove the 'common' prefix from the volume creation methods 2022-06-14 14:36:52 -05:00
fu-volume.h Remove the 'common' prefix from the volume creation methods 2022-06-14 14:36:52 -05:00
fwupdplugin.h Unexport fu_common_cab_build_silo() 2022-06-14 14:36:52 -05:00
fwupdplugin.map Add startup profiling functionality 2022-06-14 22:08:02 +01:00
meson.build Unexport fu_common_cab_build_silo() 2022-06-14 14:36:52 -05:00
README.md Remove fu_i2c_device_read_full() 2022-06-14 14:36:52 -05:00

libfwupdplugin

This library is only partially API and ABI stable. Keeping unused, unsafe and deprecated functions around forever is a maintenance burden and so symbols are removed when branching for new minor versions.

Use ./contrib/migrate.py to migrate up out-of-tree plugins to the new API.

Remember: Plugins should be upstream!

1.5.5

  • fu_common_is_cpu_intel(): Use fu_common_get_cpu_vendor() instead.
  • fu_firmware_strparse_uintXX(): Use fu_firmware_strparse_uintXX_safe() instead.
  • fu_plugin_get_usb_context(): Remove, as no longer required.
  • fu_plugin_set_usb_context(): Remove, as no longer required.
  • fu_plugin_runner_usb_device_added(): Use fu_plugin_runner_backend_device_added() instead.
  • fu_plugin_runner_udev_device_added(): Use fu_plugin_runner_backend_device_added() instead.
  • fu_plugin_runner_udev_device_changed(): Use fu_plugin_runner_backend_device_added() instead.
  • FuHidDevice->open(): Use the FuDevice superclass instead.
  • FuHidDevice->close(): Use the FuDevice superclass instead.
  • FuUsbDevice->probe(): Use the FuDevice superclass instead.
  • FuUsbDevice->open(): Use the FuDevice superclass instead.
  • FuUsbDevice->close(): Use the FuDevice superclass instead.
  • FuUdevDevice->to_string(): Use the FuDevice superclass instead.
  • FuUdevDevice->probe(): Use the FuDevice superclass instead.
  • FuUdevDevice->open(): Use the FuDevice superclass instead.
  • FuUdevDevice->close(): Use the FuDevice superclass instead.

1.5.6

  • fu_device_get_protocol(): Use fu_device_get_protocols() instead.
  • fu_device_set_protocol(): Use fu_device_add_protocol() instead.

1.6.2

  • fu_device_has_custom_flag(): Use fu_device_has_private_flag() instead.

1.6.3

  • fu_device_sleep_with_progress(): Use fu_progress_sleep() instead -- but be aware the unit of time has changed from seconds to milliseconds.
  • fu_device_get_status(): Use fu_progress_get_status() instead.
  • fu_device_set_status(): Use fu_progress_set_status() instead.
  • fu_device_get_progress(): Use fu_progress_get_percentage() instead.
  • fu_device_set_progress_full(): Use fu_progress_set_percentage_full() instead.
  • fu_device_set_progress(): Use fu_progress_set_steps(), fu_progress_add_step() and fu_progress_done() -- see the FuProgress docs for more details!

1.8.2

  • fu_udev_device_pread_full(): Use fu_udev_device_pread() instead -- as the latter now specifies the buffer length.
  • fu_udev_device_pread_full(): Use fu_udev_device_pwrite() instead -- as the latter now specifies the buffer length.
  • fu_udev_device_ioctl_full(): Use fu_udev_device_ioctl() instead -- as the latter now always specifies the timeout.
  • fu_udev_device_new_full(): Use fu_udev_device_new() instead -- as the latter always specifies the context.
  • fu_usb_device_new_full(): Use fu_usb_device_new() instead -- as the latter always specifies the context.
  • fu_device_new_with_context(): Use fu_device_new() instead -- as the latter always specifies the context.
  • fu_plugin_has_custom_flag(): Use fu_plugin_has_private_flag() instead.
  • fu_efivar_secure_boot_enabled_full(): Use fu_efivar_secure_boot_enabled() instead -- as the latter always specifies the error.
  • fu_progress_add_step(): Add a 4th parameter to the function to specify the nice name for the step, or NULL.
  • fu_backend_setup(): Now requires a FuProgress, although it can be ignored.
  • fu_backend_coldplug: Now requires a FuProgress, although it can be ignored.
  • FuPluginVfuncs->setup: Now requires a FuProgress, although it can be ignored.
  • FuPluginVfuncs->coldplug: Now requires a FuProgress, although it can be ignored.
  • fu_common_crc*: Use fu_crc prefix, i.e. remove the _common
  • fu_common_sum*: Use fu_sum prefix, i.e. remove the _common
  • fu_byte_array_set_size_full(): Use fu_byte_array_set_size instead -- as the latter now always specifies the fill char.
  • fu_common_string*: Use fu_string prefix, i.e. remove the _common
  • fu_common_bytes*: Use fu_bytes prefix, i.e. remove the _common
  • fu_common_set_contents_bytes(): Use fu_bytes_set_contents() instead
  • fu_common_get_contents_bytes(): Use fu_bytes_get_contents() instead
  • fu_common_read*: Use fu_memread prefix, i.e. replace the _common with _mem
  • fu_common_write*: Use fu_memwrite prefix, i.e. replace the _common with _mem
  • fu_common_bytes_compare_raw(): Use fu_memcmp_safe() instead
  • fu_common_spawn_sync(): Use g_spawn_sync() instead, or ideally not at all!
  • fu_common_extract_archive(): Use FuArchiveFirmware() instead.
  • fu_common_instance_id_strsafe(): Use fu_device_add_instance_strsafe() instead.
  • fu_common_kernel_locked_down(): Use fu_kernel_locked_down instead.
  • fu_common_check_kernel_version(): Use fu_kernel_check_version instead.
  • fu_common_get_firmware_search_path(): Use fu_kernel_get_firmware_search_path instead.
  • fu_common_set_firmware_search_path(): Use fu_kernel_set_firmware_search_path instead.
  • fu_common_reset_firmware_search_path(): Use fu_kernel_reset_firmware_search_path instead.
  • fu_common_firmware_builder(): You should not be using this.
  • fu_common_realpath(): You should not be using this.
  • fu_common_uri_get_scheme(): You should not be using this.
  • fu_common_dump*: Use fu_dump prefix, i.e. remove the _common
  • fu_common_error_array_get_best(): You should not be using this.
  • fu_common_cpuid(): Use fu_cpuid instead.
  • fu_common_get_cpu_vendor(): Use fu_cpu_get_vendor instead.
  • fu_common_vercmp_full(): Use fu_version_compare() instead.
  • fu_common_version_ensure_semver(): Use fu_version_ensure_semver() instead.
  • fu_common_version_from_uint*(): Use fu_version_from_uint*() instead.
  • fu_common_strtoull(): Use fu_strtoull() instead -- as the latter always specifies the error.
  • fu_smbios_to_string(): Use fu_firmware_to_string() instead -- as FuSmbios is a FuFirmware superclass.
  • fu_common_cab_build_silo(): You should not be using this.
  • fu_i2c_device_read_full(): Use fu_i2c_device_read instead.
  • fu_i2c_device_write_full(): Use fu_i2c_device_write instead.