Moved the expensive part of token termination onto a worker thread.

The effect is that the OnLogout event is quick and consistent. There is
no noticeable difference (at the ms level) between this OnLogout
implementation and not doing anything in the OnLogout handler. File
system handles are still closed synchronously so a race condition does
not exist with ui.conf killing processes with open handles.

BUG=chromium-os:29933
TEST=Ran all unit tests.
     Ran platform_Pkcs11Init* autotests.
     Tested timing by manually unloading with active keys.
     Manually verified that chapsd does not get killed on logout.

Change-Id: I8f73b15aeb4691232b890cfb1a3a26b870788fdb
2 files changed
tree: c0935212e56b545d1678973453416fe87bd1155c
  1. pkcs11/
  2. attributes.cc
  3. attributes.h
  4. attributes.proto
  5. chaps.cc
  6. chaps.h
  7. chaps_adaptor.cc
  8. chaps_adaptor.h
  9. chaps_client.cc
  10. chaps_event_generator.cc
  11. chaps_factory.h
  12. chaps_factory_impl.cc
  13. chaps_factory_impl.h
  14. chaps_factory_mock.cc
  15. chaps_factory_mock.h
  16. chaps_interface.h
  17. chaps_interface.xml
  18. chaps_proxy.cc
  19. chaps_proxy.h
  20. chaps_proxy_mock.cc
  21. chaps_proxy_mock.h
  22. chaps_service.cc
  23. chaps_service.h
  24. chaps_service_redirect.cc
  25. chaps_service_redirect.h
  26. chaps_service_test.cc
  27. chaps_test.cc
  28. chaps_utility.cc
  29. chaps_utility.h
  30. chapsd.cc
  31. chapsd.conf
  32. chapsd_test.cc
  33. common.mk
  34. handle_generator.h
  35. handle_generator_mock.h
  36. LICENSE
  37. login_event_client.cc
  38. login_event_client.h
  39. login_event_listener.h
  40. Makefile
  41. object.h
  42. object_impl.cc
  43. object_impl.h
  44. object_importer.h
  45. object_importer_mock.cc
  46. object_importer_mock.h
  47. object_mock.cc
  48. object_mock.h
  49. object_policy.h
  50. object_policy_cert.cc
  51. object_policy_cert.h
  52. object_policy_common.cc
  53. object_policy_common.h
  54. object_policy_data.cc
  55. object_policy_data.h
  56. object_policy_key.cc
  57. object_policy_key.h
  58. object_policy_mock.cc
  59. object_policy_mock.h
  60. object_policy_private_key.cc
  61. object_policy_private_key.h
  62. object_policy_public_key.cc
  63. object_policy_public_key.h
  64. object_policy_secret_key.cc
  65. object_policy_secret_key.h
  66. object_policy_test.cc
  67. object_pool.h
  68. object_pool_impl.cc
  69. object_pool_impl.h
  70. object_pool_mock.cc
  71. object_pool_mock.h
  72. object_pool_test.cc
  73. object_store.h
  74. object_store_fake.h
  75. object_store_impl.cc
  76. object_store_impl.h
  77. object_store_mock.cc
  78. object_store_mock.h
  79. object_store_test.cc
  80. object_test.cc
  81. opencryptoki_importer.cc
  82. opencryptoki_importer.h
  83. opencryptoki_importer_test.cc
  84. opencryptoki_sample_token.tgz
  85. org.chromium.Chaps.conf
  86. org.chromium.Chaps.service
  87. OWNERS
  88. p11_replay.cc
  89. README
  90. session.h
  91. session_impl.cc
  92. session_impl.h
  93. session_mock.cc
  94. session_mock.h
  95. session_test.cc
  96. slot_manager.h
  97. slot_manager_impl.cc
  98. slot_manager_impl.h
  99. slot_manager_mock.cc
  100. slot_manager_mock.h
  101. slot_manager_test.cc
  102. tpm_utility.h
  103. tpm_utility_impl.cc
  104. tpm_utility_impl.h
  105. tpm_utility_mock.cc
  106. tpm_utility_mock.h
  107. tpm_utility_test.cc