|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] mini-os/tpmback: set up callbacks before enumeration
commit 368fcb52643105d80c4705afa557647c8f7114c5
Author: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx>
AuthorDate: Thu Mar 21 16:11:20 2013 -0400
Commit: Ian Campbell <ian.campbell@xxxxxxxxxx>
CommitDate: Fri Apr 12 14:28:17 2013 +0100
mini-os/tpmback: set up callbacks before enumeration
The open/close callbacks in tpmback cannot be properly initalized in
order to catch the initial enumeration events because init_tpmback
clears the callbacks and then asynchronously starts the enumeration of
existing tpmback devices. Fix this by passing the callbacks to
init_tpmback so they can be installed before enumeration.
This also removes the unused callbacks for suspend and resume.
Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx>
---
extras/mini-os/include/tpmback.h | 12 +-----------
extras/mini-os/tpmback.c | 31 +++----------------------------
stubdom/vtpm/vtpm.c | 2 +-
stubdom/vtpmmgr/init.c | 2 +-
4 files changed, 6 insertions(+), 41 deletions(-)
diff --git a/extras/mini-os/include/tpmback.h b/extras/mini-os/include/tpmback.h
index ec9eda4..3c11c34 100644
--- a/extras/mini-os/include/tpmback.h
+++ b/extras/mini-os/include/tpmback.h
@@ -56,7 +56,7 @@ struct tpmcmd {
typedef struct tpmcmd tpmcmd_t;
/* Initialize the tpm backend driver */
-void init_tpmback(void);
+void init_tpmback(void (*open_cb)(domid_t, unsigned int), void
(*close_cb)(domid_t, unsigned int));
/* Shutdown tpm backend driver */
void shutdown_tpmback(void);
@@ -94,14 +94,4 @@ int tpmback_num_frontends(void);
* The return value is internally allocated, so don't free it */
unsigned char* tpmback_get_uuid(domid_t domid, unsigned int handle);
-/* Specify a function to call when a new tpm device connects */
-void tpmback_set_open_callback(void (*cb)(domid_t, unsigned int));
-
-/* Specify a function to call when a tpm device disconnects */
-void tpmback_set_close_callback(void (*cb)(domid_t, unsigned int));
-
-//Not Implemented
-void tpmback_set_suspend_callback(void (*cb)(domid_t, unsigned int));
-void tpmback_set_resume_callback(void (*cb)(domid_t, unsigned int));
-
#endif
diff --git a/extras/mini-os/tpmback.c b/extras/mini-os/tpmback.c
index 9917765..cff3861 100644
--- a/extras/mini-os/tpmback.c
+++ b/extras/mini-os/tpmback.c
@@ -114,8 +114,6 @@ struct tpmback_dev {
/* Callbacks */
void (*open_callback)(domid_t, unsigned int);
void (*close_callback)(domid_t, unsigned int);
- void (*suspend_callback)(domid_t, unsigned int);
- void (*resume_callback)(domid_t, unsigned int);
};
typedef struct tpmback_dev tpmback_dev_t;
@@ -131,8 +129,6 @@ static tpmback_dev_t gtpmdev = {
.events = NULL,
.open_callback = NULL,
.close_callback = NULL,
- .suspend_callback = NULL,
- .resume_callback = NULL,
};
struct wait_queue_head waitq;
int globalinit = 0;
@@ -809,23 +805,6 @@ unsigned char* tpmback_get_uuid(domid_t domid, unsigned
int handle)
return tpmif->uuid;
}
-void tpmback_set_open_callback(void (*cb)(domid_t, unsigned int))
-{
- gtpmdev.open_callback = cb;
-}
-void tpmback_set_close_callback(void (*cb)(domid_t, unsigned int))
-{
- gtpmdev.close_callback = cb;
-}
-void tpmback_set_suspend_callback(void (*cb)(domid_t, unsigned int))
-{
- gtpmdev.suspend_callback = cb;
-}
-void tpmback_set_resume_callback(void (*cb)(domid_t, unsigned int))
-{
- gtpmdev.resume_callback = cb;
-}
-
static void event_listener(void)
{
const char* bepath = "backend/vtpm";
@@ -872,7 +851,7 @@ void event_thread(void* p) {
event_listener();
}
-void init_tpmback(void)
+void init_tpmback(void (*open_cb)(domid_t, unsigned int), void
(*close_cb)(domid_t, unsigned int))
{
if(!globalinit) {
init_waitqueue_head(&waitq);
@@ -884,8 +863,8 @@ void init_tpmback(void)
gtpmdev.num_tpms = 0;
gtpmdev.flags = 0;
- gtpmdev.open_callback = gtpmdev.close_callback = NULL;
- gtpmdev.suspend_callback = gtpmdev.resume_callback = NULL;
+ gtpmdev.open_callback = open_cb;
+ gtpmdev.close_callback = close_cb;
eventthread = create_thread("tpmback-listener", event_thread, NULL);
@@ -893,10 +872,6 @@ void init_tpmback(void)
void shutdown_tpmback(void)
{
- /* Disable callbacks */
- gtpmdev.open_callback = gtpmdev.close_callback = NULL;
- gtpmdev.suspend_callback = gtpmdev.resume_callback = NULL;
-
TPMBACK_LOG("Shutting down tpm backend\n");
/* Set the quit flag */
gtpmdev.flags = TPMIF_CLOSED;
diff --git a/stubdom/vtpm/vtpm.c b/stubdom/vtpm/vtpm.c
index 71aef78..3362ea8 100644
--- a/stubdom/vtpm/vtpm.c
+++ b/stubdom/vtpm/vtpm.c
@@ -367,7 +367,7 @@ int main(int argc, char **argv)
}
/* Initialize devices */
- init_tpmback();
+ init_tpmback(NULL, NULL);
if((tpmfront_dev = init_tpmfront(NULL)) == NULL) {
error("Unable to initialize tpmfront device");
goto abort_posttpmfront;
diff --git a/stubdom/vtpmmgr/init.c b/stubdom/vtpmmgr/init.c
index a158020..00dd9f3 100644
--- a/stubdom/vtpmmgr/init.c
+++ b/stubdom/vtpmmgr/init.c
@@ -462,7 +462,7 @@ TPM_RESULT vtpmmgr_init(int argc, char** argv) {
}
//Setup tpmback device
- init_tpmback();
+ init_tpmback(NULL, NULL);
//Setup tpm access
switch(opts.tpmdriver) {
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |