//\r
\r
typedef struct {\r
- CONST VOID *Data;\r
- UINT32 Len;\r
+ CONST VOID *Data;\r
+ UINT32 Len;\r
} WRITE_REQUEST;\r
\r
/* Register callback to watch subtree (node) in the XenStore. */\r
-#define XENSTORE_WATCH_SIGNATURE SIGNATURE_32 ('X','S','w','a')\r
-struct _XENSTORE_WATCH\r
-{\r
- UINT32 Signature;\r
- LIST_ENTRY Link;\r
+#define XENSTORE_WATCH_SIGNATURE SIGNATURE_32 ('X','S','w','a')\r
+struct _XENSTORE_WATCH {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
\r
/* Path being watched. */\r
- CHAR8 *Node;\r
+ CHAR8 *Node;\r
};\r
\r
#define XENSTORE_WATCH_FROM_LINK(l) \\r
CR (l, XENSTORE_WATCH, Link, XENSTORE_WATCH_SIGNATURE)\r
\r
-\r
/**\r
* Structure capturing messages received from the XenStore service.\r
*/\r
-#define XENSTORE_MESSAGE_SIGNATURE SIGNATURE_32 ('X', 'S', 's', 'm')\r
+#define XENSTORE_MESSAGE_SIGNATURE SIGNATURE_32 ('X', 'S', 's', 'm')\r
typedef struct {\r
- UINT32 Signature;\r
- LIST_ENTRY Link;\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
\r
- struct xsd_sockmsg Header;\r
+ struct xsd_sockmsg Header;\r
\r
union {\r
/* Queued replies. */\r
struct {\r
- CHAR8 *Body;\r
+ CHAR8 *Body;\r
} Reply;\r
\r
/* Queued watch events. */\r
struct {\r
- XENSTORE_WATCH *Handle;\r
- CONST CHAR8 **Vector;\r
- UINT32 VectorSize;\r
+ XENSTORE_WATCH *Handle;\r
+ CONST CHAR8 **Vector;\r
+ UINT32 VectorSize;\r
} Watch;\r
} u;\r
} XENSTORE_MESSAGE;\r
* Pointer to shared memory communication structures allowing us\r
* to communicate with the XenStore service.\r
*/\r
- struct xenstore_domain_interface *XenStore;\r
+ struct xenstore_domain_interface *XenStore;\r
\r
- XENBUS_DEVICE *Dev;\r
+ XENBUS_DEVICE *Dev;\r
\r
/**\r
* A list of replies to our requests.\r
*\r
* /note Only one requesting context can be active at a time.\r
*/\r
- LIST_ENTRY ReplyList;\r
+ LIST_ENTRY ReplyList;\r
\r
/** Lock protecting the reply list. */\r
- EFI_LOCK ReplyLock;\r
+ EFI_LOCK ReplyLock;\r
\r
/**\r
* List of registered watches.\r
*/\r
- LIST_ENTRY RegisteredWatches;\r
+ LIST_ENTRY RegisteredWatches;\r
\r
/** Lock protecting the registered watches list. */\r
- EFI_LOCK RegisteredWatchesLock;\r
+ EFI_LOCK RegisteredWatchesLock;\r
\r
/**\r
* List of pending watch callback events.\r
*/\r
- LIST_ENTRY WatchEvents;\r
+ LIST_ENTRY WatchEvents;\r
\r
/** Lock protecting the watch callback list. */\r
- EFI_LOCK WatchEventsLock;\r
+ EFI_LOCK WatchEventsLock;\r
\r
/**\r
* The event channel for communicating with the\r
* XenStore service.\r
*/\r
- evtchn_port_t EventChannel;\r
+ evtchn_port_t EventChannel;\r
\r
/** Handle for XenStore events. */\r
- EFI_EVENT EventChannelEvent;\r
+ EFI_EVENT EventChannelEvent;\r
} XENSTORE_PRIVATE;\r
\r
//\r
// Global Data\r
//\r
-static XENSTORE_PRIVATE xs;\r
-\r
+static XENSTORE_PRIVATE xs;\r
\r
//\r
// Private Utility Functions\r
STATIC\r
UINT32\r
ExtractStrings (\r
- IN CONST CHAR8 *Strings,\r
- IN UINTN Len,\r
- OUT CONST CHAR8 **Dst OPTIONAL\r
+ IN CONST CHAR8 *Strings,\r
+ IN UINTN Len,\r
+ OUT CONST CHAR8 **Dst OPTIONAL\r
)\r
{\r
- UINT32 Num = 0;\r
- CONST CHAR8 *Ptr;\r
+ UINT32 Num = 0;\r
+ CONST CHAR8 *Ptr;\r
\r
for (Ptr = Strings; Ptr < Strings + Len; Ptr += AsciiStrSize (Ptr)) {\r
if (Dst != NULL) {\r
*Dst++ = Ptr;\r
}\r
+\r
Num++;\r
}\r
\r
OUT UINT32 *NumPtr\r
)\r
{\r
- CONST CHAR8 **Dst;\r
+ CONST CHAR8 **Dst;\r
\r
- ASSERT(NumPtr != NULL);\r
- ASSERT(Strings != NULL);\r
+ ASSERT (NumPtr != NULL);\r
+ ASSERT (Strings != NULL);\r
\r
/* Protect against unterminated buffers. */\r
if (Len > 0) {\r
\r
/* Transfer to one big alloc for easy freeing by the caller. */\r
Dst = AllocatePool (*NumPtr * sizeof (CHAR8 *) + Len);\r
- CopyMem ((VOID*)&Dst[*NumPtr], Strings, Len);\r
+ CopyMem ((VOID *)&Dst[*NumPtr], Strings, Len);\r
FreePool (Strings);\r
\r
/* Extract pointers to newly allocated array. */\r
- Strings = (CHAR8 *) &Dst[*NumPtr];\r
+ Strings = (CHAR8 *)&Dst[*NumPtr];\r
ExtractStrings (Strings, Len, Dst);\r
\r
return (Dst);\r
STATIC\r
XENSTORE_WATCH *\r
XenStoreFindWatch (\r
- IN CONST CHAR8 *Token\r
+ IN CONST CHAR8 *Token\r
)\r
{\r
- XENSTORE_WATCH *Watch, *WantedWatch;\r
- LIST_ENTRY *Entry;\r
+ XENSTORE_WATCH *Watch, *WantedWatch;\r
+ LIST_ENTRY *Entry;\r
\r
- WantedWatch = (VOID *) AsciiStrHexToUintn (Token);\r
+ WantedWatch = (VOID *)AsciiStrHexToUintn (Token);\r
\r
if (IsListEmpty (&xs.RegisteredWatches)) {\r
return NULL;\r
}\r
+\r
for (Entry = GetFirstNode (&xs.RegisteredWatches);\r
!IsNull (&xs.RegisteredWatches, Entry);\r
- Entry = GetNextNode (&xs.RegisteredWatches, Entry)) {\r
+ Entry = GetNextNode (&xs.RegisteredWatches, Entry))\r
+ {\r
Watch = XENSTORE_WATCH_FROM_LINK (Entry);\r
- if (Watch == WantedWatch)\r
+ if (Watch == WantedWatch) {\r
return Watch;\r
+ }\r
}\r
\r
return NULL;\r
\r
CHAR8 *\r
XenStoreJoin (\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node\r
)\r
{\r
- CHAR8 *Buf;\r
- UINTN BufSize;\r
+ CHAR8 *Buf;\r
+ UINTN BufSize;\r
\r
/* +1 for '/' and +1 for '\0' */\r
BufSize = AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2;\r
- Buf = AllocatePool (BufSize);\r
+ Buf = AllocatePool (BufSize);\r
ASSERT (Buf != NULL);\r
\r
if (Node[0] == '\0') {\r
STATIC\r
BOOLEAN\r
XenStoreCheckIndexes (\r
- XENSTORE_RING_IDX Cons,\r
- XENSTORE_RING_IDX Prod\r
+ XENSTORE_RING_IDX Cons,\r
+ XENSTORE_RING_IDX Prod\r
)\r
{\r
return ((Prod - Cons) <= XENSTORE_RING_SIZE);\r
STATIC\r
VOID *\r
XenStoreGetOutputChunk (\r
- IN XENSTORE_RING_IDX Cons,\r
- IN XENSTORE_RING_IDX Prod,\r
- IN CHAR8 *Buffer,\r
- OUT UINT32 *LenPtr\r
+ IN XENSTORE_RING_IDX Cons,\r
+ IN XENSTORE_RING_IDX Prod,\r
+ IN CHAR8 *Buffer,\r
+ OUT UINT32 *LenPtr\r
)\r
{\r
- UINT32 Len;\r
+ UINT32 Len;\r
+\r
Len = XENSTORE_RING_SIZE - MASK_XENSTORE_IDX (Prod);\r
if ((XENSTORE_RING_SIZE - (Prod - Cons)) < Len) {\r
Len = XENSTORE_RING_SIZE - (Prod - Cons);\r
}\r
+\r
*LenPtr = Len;\r
return (Buffer + MASK_XENSTORE_IDX (Prod));\r
}\r
STATIC\r
CONST VOID *\r
XenStoreGetInputChunk (\r
- IN XENSTORE_RING_IDX Cons,\r
- IN XENSTORE_RING_IDX Prod,\r
- IN CONST CHAR8 *Buffer,\r
- OUT UINT32 *LenPtr\r
+ IN XENSTORE_RING_IDX Cons,\r
+ IN XENSTORE_RING_IDX Prod,\r
+ IN CONST CHAR8 *Buffer,\r
+ OUT UINT32 *LenPtr\r
)\r
{\r
- UINT32 Len;\r
+ UINT32 Len;\r
\r
Len = XENSTORE_RING_SIZE - MASK_XENSTORE_IDX (Cons);\r
if ((Prod - Cons) < Len) {\r
Len = Prod - Cons;\r
}\r
+\r
*LenPtr = Len;\r
return (Buffer + MASK_XENSTORE_IDX (Cons));\r
}\r
STATIC\r
EFI_STATUS\r
XenStoreWaitForEvent (\r
- IN EFI_EVENT Event,\r
- IN UINT64 Timeout\r
+ IN EFI_EVENT Event,\r
+ IN UINT64 Timeout\r
)\r
{\r
- UINTN Index;\r
- EFI_STATUS Status;\r
- EFI_EVENT TimerEvent;\r
- EFI_EVENT WaitList[2];\r
+ UINTN Index;\r
+ EFI_STATUS Status;\r
+ EFI_EVENT TimerEvent;\r
+ EFI_EVENT WaitList[2];\r
\r
gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &TimerEvent);\r
gBS->SetTimer (TimerEvent, TimerRelative, Timeout);\r
\r
WaitList[0] = xs.EventChannelEvent;\r
WaitList[1] = TimerEvent;\r
- Status = gBS->WaitForEvent (2, WaitList, &Index);\r
+ Status = gBS->WaitForEvent (2, WaitList, &Index);\r
ASSERT (Status != EFI_INVALID_PARAMETER);\r
gBS->CloseEvent (TimerEvent);\r
if (Status == EFI_UNSUPPORTED) {\r
return EFI_SUCCESS;\r
}\r
+\r
if (Index == 1) {\r
return EFI_TIMEOUT;\r
} else {\r
STATIC\r
XENSTORE_STATUS\r
XenStoreWriteStore (\r
- IN CONST VOID *DataPtr,\r
- IN UINT32 Len\r
+ IN CONST VOID *DataPtr,\r
+ IN UINT32 Len\r
)\r
{\r
- XENSTORE_RING_IDX Cons, Prod;\r
- CONST CHAR8 *Data = (CONST CHAR8 *)DataPtr;\r
+ XENSTORE_RING_IDX Cons, Prod;\r
+ CONST CHAR8 *Data = (CONST CHAR8 *)DataPtr;\r
\r
while (Len != 0) {\r
- void *Dest;\r
- UINT32 Available;\r
+ void *Dest;\r
+ UINT32 Available;\r
\r
Cons = xs.XenStore->req_cons;\r
Prod = xs.XenStore->req_prod;\r
* Note that the events from both queues are combined, so being woken\r
* does not guarantee that data exist in the read ring.\r
*/\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- Status = XenStoreWaitForEvent (xs.EventChannelEvent,\r
- EFI_TIMER_PERIOD_SECONDS (1));\r
+ Status = XenStoreWaitForEvent (\r
+ xs.EventChannelEvent,\r
+ EFI_TIMER_PERIOD_SECONDS (1)\r
+ );\r
if (Status == EFI_TIMEOUT) {\r
DEBUG ((DEBUG_WARN, "XenStore Write, waiting for a ring event.\n"));\r
}\r
+\r
continue;\r
}\r
\r
\r
CopyMem (Dest, Data, Available);\r
Data += Available;\r
- Len -= Available;\r
+ Len -= Available;\r
\r
/*\r
* The store to the producer index, which indicates\r
STATIC\r
XENSTORE_STATUS\r
XenStoreReadStore (\r
- OUT VOID *DataPtr,\r
- IN UINT32 Len\r
+ OUT VOID *DataPtr,\r
+ IN UINT32 Len\r
)\r
{\r
- XENSTORE_RING_IDX Cons, Prod;\r
- CHAR8 *Data = (CHAR8 *) DataPtr;\r
+ XENSTORE_RING_IDX Cons, Prod;\r
+ CHAR8 *Data = (CHAR8 *)DataPtr;\r
\r
while (Len != 0) {\r
- UINT32 Available;\r
- CONST CHAR8 *Src;\r
+ UINT32 Available;\r
+ CONST CHAR8 *Src;\r
\r
Cons = xs.XenStore->rsp_cons;\r
Prod = xs.XenStore->rsp_prod;\r
* Note that the events from both queues are combined, so being woken\r
* does not guarantee that data exist in the read ring.\r
*/\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- Status = XenStoreWaitForEvent (xs.EventChannelEvent,\r
- EFI_TIMER_PERIOD_SECONDS (1));\r
+ Status = XenStoreWaitForEvent (\r
+ xs.EventChannelEvent,\r
+ EFI_TIMER_PERIOD_SECONDS (1)\r
+ );\r
if (Status == EFI_TIMEOUT) {\r
DEBUG ((DEBUG_WARN, "XenStore Read, waiting for a ring event.\n"));\r
}\r
+\r
continue;\r
}\r
\r
\r
CopyMem (Data, Src, Available);\r
Data += Available;\r
- Len -= Available;\r
+ Len -= Available;\r
\r
/*\r
* Insure that the producer of this ring does not see\r
VOID\r
)\r
{\r
- XENSTORE_MESSAGE *Message;\r
- CHAR8 *Body;\r
- XENSTORE_STATUS Status;\r
+ XENSTORE_MESSAGE *Message;\r
+ CHAR8 *Body;\r
+ XENSTORE_STATUS Status;\r
\r
- Message = AllocateZeroPool (sizeof (XENSTORE_MESSAGE));\r
+ Message = AllocateZeroPool (sizeof (XENSTORE_MESSAGE));\r
Message->Signature = XENSTORE_MESSAGE_SIGNATURE;\r
- Status = XenStoreReadStore (&Message->Header, sizeof (Message->Header));\r
+ Status = XenStoreReadStore (&Message->Header, sizeof (Message->Header));\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
FreePool (Message);\r
DEBUG ((DEBUG_ERROR, "XenStore: Error read store (%d)\n", Status));\r
return Status;\r
}\r
\r
- Body = AllocatePool (Message->Header.len + 1);\r
+ Body = AllocatePool (Message->Header.len + 1);\r
Status = XenStoreReadStore (Body, Message->Header.len);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
FreePool (Body);\r
DEBUG ((DEBUG_ERROR, "XenStore: Error read store (%d)\n", Status));\r
return Status;\r
}\r
+\r
Body[Message->Header.len] = '\0';\r
\r
if (Message->Header.type == XS_WATCH_EVENT) {\r
- Message->u.Watch.Vector = Split(Body, Message->Header.len,\r
- &Message->u.Watch.VectorSize);\r
+ Message->u.Watch.Vector = Split (\r
+ Body,\r
+ Message->Header.len,\r
+ &Message->u.Watch.VectorSize\r
+ );\r
\r
EfiAcquireLock (&xs.RegisteredWatchesLock);\r
Message->u.Watch.Handle =\r
XenStoreFindWatch (Message->u.Watch.Vector[XS_WATCH_TOKEN]);\r
- DEBUG ((DEBUG_INFO, "XenStore: Watch event %a\n",\r
- Message->u.Watch.Vector[XS_WATCH_TOKEN]));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "XenStore: Watch event %a\n",\r
+ Message->u.Watch.Vector[XS_WATCH_TOKEN]\r
+ ));\r
if (Message->u.Watch.Handle != NULL) {\r
EfiAcquireLock (&xs.WatchEventsLock);\r
InsertHeadList (&xs.WatchEvents, &Message->Link);\r
EfiReleaseLock (&xs.WatchEventsLock);\r
} else {\r
- DEBUG ((DEBUG_WARN, "XenStore: Watch handle %a not found\n",\r
- Message->u.Watch.Vector[XS_WATCH_TOKEN]));\r
- FreePool((VOID*)Message->u.Watch.Vector);\r
- FreePool(Message);\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
+ "XenStore: Watch handle %a not found\n",\r
+ Message->u.Watch.Vector[XS_WATCH_TOKEN]\r
+ ));\r
+ FreePool ((VOID *)Message->u.Watch.Vector);\r
+ FreePool (Message);\r
}\r
+\r
EfiReleaseLock (&xs.RegisteredWatchesLock);\r
} else {\r
Message->u.Reply.Body = Body;\r
\r
**/\r
typedef struct {\r
- XENSTORE_STATUS Status;\r
- CONST CHAR8 *ErrorStr;\r
+ XENSTORE_STATUS Status;\r
+ CONST CHAR8 *ErrorStr;\r
} XenStoreErrors;\r
\r
-static XenStoreErrors gXenStoreErrors[] = {\r
- { XENSTORE_STATUS_EINVAL, "EINVAL" },\r
- { XENSTORE_STATUS_EACCES, "EACCES" },\r
- { XENSTORE_STATUS_EEXIST, "EEXIST" },\r
- { XENSTORE_STATUS_EISDIR, "EISDIR" },\r
- { XENSTORE_STATUS_ENOENT, "ENOENT" },\r
- { XENSTORE_STATUS_ENOMEM, "ENOMEM" },\r
- { XENSTORE_STATUS_ENOSPC, "ENOSPC" },\r
- { XENSTORE_STATUS_EIO, "EIO" },\r
+static XenStoreErrors gXenStoreErrors[] = {\r
+ { XENSTORE_STATUS_EINVAL, "EINVAL" },\r
+ { XENSTORE_STATUS_EACCES, "EACCES" },\r
+ { XENSTORE_STATUS_EEXIST, "EEXIST" },\r
+ { XENSTORE_STATUS_EISDIR, "EISDIR" },\r
+ { XENSTORE_STATUS_ENOENT, "ENOENT" },\r
+ { XENSTORE_STATUS_ENOMEM, "ENOMEM" },\r
+ { XENSTORE_STATUS_ENOSPC, "ENOSPC" },\r
+ { XENSTORE_STATUS_EIO, "EIO" },\r
{ XENSTORE_STATUS_ENOTEMPTY, "ENOTEMPTY" },\r
- { XENSTORE_STATUS_ENOSYS, "ENOSYS" },\r
- { XENSTORE_STATUS_EROFS, "EROFS" },\r
- { XENSTORE_STATUS_EBUSY, "EBUSY" },\r
- { XENSTORE_STATUS_EAGAIN, "EAGAIN" },\r
- { XENSTORE_STATUS_EISCONN, "EISCONN" },\r
- { XENSTORE_STATUS_E2BIG, "E2BIG" }\r
+ { XENSTORE_STATUS_ENOSYS, "ENOSYS" },\r
+ { XENSTORE_STATUS_EROFS, "EROFS" },\r
+ { XENSTORE_STATUS_EBUSY, "EBUSY" },\r
+ { XENSTORE_STATUS_EAGAIN, "EAGAIN" },\r
+ { XENSTORE_STATUS_EISCONN, "EISCONN" },\r
+ { XENSTORE_STATUS_E2BIG, "E2BIG" }\r
};\r
\r
STATIC\r
XENSTORE_STATUS\r
XenStoreGetError (\r
- CONST CHAR8 *ErrorStr\r
+ CONST CHAR8 *ErrorStr\r
)\r
{\r
- UINT32 Index;\r
+ UINT32 Index;\r
\r
- for (Index = 0; Index < ARRAY_SIZE(gXenStoreErrors); Index++) {\r
+ for (Index = 0; Index < ARRAY_SIZE (gXenStoreErrors); Index++) {\r
if (!AsciiStrCmp (ErrorStr, gXenStoreErrors[Index].ErrorStr)) {\r
return gXenStoreErrors[Index].Status;\r
}\r
}\r
+\r
DEBUG ((DEBUG_WARN, "XenStore gave unknown error %a\n", ErrorStr));\r
return XENSTORE_STATUS_EINVAL;\r
}\r
STATIC\r
XENSTORE_STATUS\r
XenStoreReadReply (\r
- OUT enum xsd_sockmsg_type *TypePtr,\r
- OUT UINT32 *LenPtr OPTIONAL,\r
- OUT VOID **Result\r
+ OUT enum xsd_sockmsg_type *TypePtr,\r
+ OUT UINT32 *LenPtr OPTIONAL,\r
+ OUT VOID **Result\r
)\r
{\r
- XENSTORE_MESSAGE *Message;\r
- LIST_ENTRY *Entry;\r
- CHAR8 *Body;\r
+ XENSTORE_MESSAGE *Message;\r
+ LIST_ENTRY *Entry;\r
+ CHAR8 *Body;\r
\r
while (IsListEmpty (&xs.ReplyList)) {\r
- XENSTORE_STATUS Status;\r
+ XENSTORE_STATUS Status;\r
Status = XenStoreProcessMessage ();\r
- if (Status != XENSTORE_STATUS_SUCCESS && Status != XENSTORE_STATUS_EAGAIN) {\r
- DEBUG ((DEBUG_ERROR, "XenStore, error while reading the ring (%d).",\r
- Status));\r
+ if ((Status != XENSTORE_STATUS_SUCCESS) && (Status != XENSTORE_STATUS_EAGAIN)) {\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "XenStore, error while reading the ring (%d).",\r
+ Status\r
+ ));\r
return Status;\r
}\r
}\r
+\r
EfiAcquireLock (&xs.ReplyLock);\r
- Entry = GetFirstNode (&xs.ReplyList);\r
+ Entry = GetFirstNode (&xs.ReplyList);\r
Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
RemoveEntryList (Entry);\r
EfiReleaseLock (&xs.ReplyLock);\r
if (LenPtr != NULL) {\r
*LenPtr = Message->Header.len;\r
}\r
+\r
Body = Message->u.Reply.Body;\r
\r
FreePool (Message);\r
STATIC\r
XENSTORE_STATUS\r
XenStoreTalkv (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN enum xsd_sockmsg_type RequestType,\r
- IN CONST WRITE_REQUEST *WriteRequest,\r
- IN UINT32 NumRequests,\r
- OUT UINT32 *LenPtr OPTIONAL,\r
- OUT VOID **ResultPtr OPTIONAL\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN enum xsd_sockmsg_type RequestType,\r
+ IN CONST WRITE_REQUEST *WriteRequest,\r
+ IN UINT32 NumRequests,\r
+ OUT UINT32 *LenPtr OPTIONAL,\r
+ OUT VOID **ResultPtr OPTIONAL\r
)\r
{\r
- struct xsd_sockmsg Message;\r
- void *Return = NULL;\r
- UINT32 Index;\r
- XENSTORE_STATUS Status;\r
+ struct xsd_sockmsg Message;\r
+ void *Return = NULL;\r
+ UINT32 Index;\r
+ XENSTORE_STATUS Status;\r
\r
if (Transaction == XST_NIL) {\r
Message.tx_id = 0;\r
} else {\r
Message.tx_id = Transaction->Id;\r
}\r
+\r
Message.req_id = 0;\r
- Message.type = RequestType;\r
- Message.len = 0;\r
+ Message.type = RequestType;\r
+ Message.len = 0;\r
for (Index = 0; Index < NumRequests; Index++) {\r
Message.len += WriteRequest[Index].Len;\r
}\r
STATIC\r
XENSTORE_STATUS\r
XenStoreSingle (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN enum xsd_sockmsg_type RequestType,\r
- IN CONST CHAR8 *Body,\r
- OUT UINT32 *LenPtr OPTIONAL,\r
- OUT VOID **Result OPTIONAL\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN enum xsd_sockmsg_type RequestType,\r
+ IN CONST CHAR8 *Body,\r
+ OUT UINT32 *LenPtr OPTIONAL,\r
+ OUT VOID **Result OPTIONAL\r
)\r
{\r
- WRITE_REQUEST WriteRequest;\r
-\r
- WriteRequest.Data = (VOID *) Body;\r
- WriteRequest.Len = (UINT32)AsciiStrSize (Body);\r
-\r
- return XenStoreTalkv (Transaction, RequestType, &WriteRequest, 1,\r
- LenPtr, Result);\r
+ WRITE_REQUEST WriteRequest;\r
+\r
+ WriteRequest.Data = (VOID *)Body;\r
+ WriteRequest.Len = (UINT32)AsciiStrSize (Body);\r
+\r
+ return XenStoreTalkv (\r
+ Transaction,\r
+ RequestType,\r
+ &WriteRequest,\r
+ 1,\r
+ LenPtr,\r
+ Result\r
+ );\r
}\r
\r
//\r
STATIC\r
XENSTORE_STATUS\r
XenStoreWatch (\r
- CONST CHAR8 *Path,\r
- CONST CHAR8 *Token\r
+ CONST CHAR8 *Path,\r
+ CONST CHAR8 *Token\r
)\r
{\r
- WRITE_REQUEST WriteRequest[2];\r
+ WRITE_REQUEST WriteRequest[2];\r
\r
- WriteRequest[0].Data = (VOID *) Path;\r
- WriteRequest[0].Len = (UINT32)AsciiStrSize (Path);\r
- WriteRequest[1].Data = (VOID *) Token;\r
- WriteRequest[1].Len = (UINT32)AsciiStrSize (Token);\r
+ WriteRequest[0].Data = (VOID *)Path;\r
+ WriteRequest[0].Len = (UINT32)AsciiStrSize (Path);\r
+ WriteRequest[1].Data = (VOID *)Token;\r
+ WriteRequest[1].Len = (UINT32)AsciiStrSize (Token);\r
\r
return XenStoreTalkv (XST_NIL, XS_WATCH, WriteRequest, 2, NULL, NULL);\r
}\r
STATIC\r
XENSTORE_STATUS\r
XenStoreUnwatch (\r
- CONST CHAR8 *Path,\r
- CONST CHAR8 *Token\r
+ CONST CHAR8 *Path,\r
+ CONST CHAR8 *Token\r
)\r
{\r
- WRITE_REQUEST WriteRequest[2];\r
+ WRITE_REQUEST WriteRequest[2];\r
\r
- WriteRequest[0].Data = (VOID *) Path;\r
- WriteRequest[0].Len = (UINT32)AsciiStrSize (Path);\r
- WriteRequest[1].Data = (VOID *) Token;\r
- WriteRequest[1].Len = (UINT32)AsciiStrSize (Token);\r
+ WriteRequest[0].Data = (VOID *)Path;\r
+ WriteRequest[0].Len = (UINT32)AsciiStrSize (Path);\r
+ WriteRequest[1].Data = (VOID *)Token;\r
+ WriteRequest[1].Len = (UINT32)AsciiStrSize (Token);\r
\r
return XenStoreTalkv (XST_NIL, XS_UNWATCH, WriteRequest, 2, NULL, NULL);\r
}\r
STATIC\r
XENSTORE_STATUS\r
XenStoreWaitWatch (\r
- VOID *Token\r
+ VOID *Token\r
)\r
{\r
- XENSTORE_MESSAGE *Message;\r
- LIST_ENTRY *Entry = NULL;\r
- LIST_ENTRY *Last = NULL;\r
- XENSTORE_STATUS Status;\r
+ XENSTORE_MESSAGE *Message;\r
+ LIST_ENTRY *Entry = NULL;\r
+ LIST_ENTRY *Last = NULL;\r
+ XENSTORE_STATUS Status;\r
\r
while (TRUE) {\r
EfiAcquireLock (&xs.WatchEventsLock);\r
if (IsListEmpty (&xs.WatchEvents) ||\r
- Last == GetFirstNode (&xs.WatchEvents)) {\r
+ (Last == GetFirstNode (&xs.WatchEvents)))\r
+ {\r
EfiReleaseLock (&xs.WatchEventsLock);\r
Status = XenStoreProcessMessage ();\r
- if (Status != XENSTORE_STATUS_SUCCESS && Status != XENSTORE_STATUS_EAGAIN) {\r
+ if ((Status != XENSTORE_STATUS_SUCCESS) && (Status != XENSTORE_STATUS_EAGAIN)) {\r
return Status;\r
}\r
+\r
continue;\r
}\r
\r
for (Entry = GetFirstNode (&xs.WatchEvents);\r
Entry != Last && !IsNull (&xs.WatchEvents, Entry);\r
- Entry = GetNextNode (&xs.WatchEvents, Entry)) {\r
+ Entry = GetNextNode (&xs.WatchEvents, Entry))\r
+ {\r
Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
if (Message->u.Watch.Handle == Token) {\r
RemoveEntryList (Entry);\r
EfiReleaseLock (&xs.WatchEventsLock);\r
- FreePool((VOID*)Message->u.Watch.Vector);\r
- FreePool(Message);\r
+ FreePool ((VOID *)Message->u.Watch.Vector);\r
+ FreePool (Message);\r
return XENSTORE_STATUS_SUCCESS;\r
}\r
}\r
+\r
Last = GetFirstNode (&xs.WatchEvents);\r
EfiReleaseLock (&xs.WatchEventsLock);\r
}\r
VOID\r
EFIAPI\r
NotifyEventChannelCheckForEvent (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- XENSTORE_PRIVATE *xsp;\r
+ XENSTORE_PRIVATE *xsp;\r
+\r
xsp = (XENSTORE_PRIVATE *)Context;\r
if (TestAndClearBit (xsp->EventChannel, xsp->Dev->SharedInfo->evtchn_pending)) {\r
gBS->SignalEvent (Event);\r
STATIC\r
EFI_STATUS\r
XenStoreInitComms (\r
- XENSTORE_PRIVATE *xsp\r
+ XENSTORE_PRIVATE *xsp\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_EVENT TimerEvent;\r
- struct xenstore_domain_interface *XenStore = xsp->XenStore;\r
+ EFI_STATUS Status;\r
+ EFI_EVENT TimerEvent;\r
+ struct xenstore_domain_interface *XenStore = xsp->XenStore;\r
\r
Status = gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &TimerEvent);\r
- Status = gBS->SetTimer (TimerEvent, TimerRelative,\r
- EFI_TIMER_PERIOD_SECONDS (5));\r
+ Status = gBS->SetTimer (\r
+ TimerEvent,\r
+ TimerRelative,\r
+ EFI_TIMER_PERIOD_SECONDS (5)\r
+ );\r
while (XenStore->rsp_prod != XenStore->rsp_cons) {\r
Status = gBS->CheckEvent (TimerEvent);\r
if (!EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_WARN, "XENSTORE response ring is not quiescent "\r
- "(%08x:%08x): fixing up\n",\r
- XenStore->rsp_cons, XenStore->rsp_prod));\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
+ "XENSTORE response ring is not quiescent "\r
+ "(%08x:%08x): fixing up\n",\r
+ XenStore->rsp_cons,\r
+ XenStore->rsp_prod\r
+ ));\r
XenStore->rsp_cons = XenStore->rsp_prod;\r
}\r
}\r
+\r
gBS->CloseEvent (TimerEvent);\r
\r
- Status = gBS->CreateEvent (EVT_NOTIFY_WAIT, TPL_NOTIFY,\r
- NotifyEventChannelCheckForEvent, xsp,\r
- &xsp->EventChannelEvent);\r
+ Status = gBS->CreateEvent (\r
+ EVT_NOTIFY_WAIT,\r
+ TPL_NOTIFY,\r
+ NotifyEventChannelCheckForEvent,\r
+ xsp,\r
+ &xsp->EventChannelEvent\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r
**/\r
EFI_STATUS\r
XenStoreInit (\r
- XENBUS_DEVICE *Dev\r
+ XENBUS_DEVICE *Dev\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
+\r
/**\r
* The HVM guest pseudo-physical frame number. This is Xen's mapping\r
* of the true machine frame number into our "physical address space".\r
*/\r
- UINTN XenStoreGpfn;\r
+ UINTN XenStoreGpfn;\r
\r
xs.Dev = Dev;\r
\r
xs.EventChannel = (evtchn_port_t)XenHypercallHvmGetParam (HVM_PARAM_STORE_EVTCHN);\r
- XenStoreGpfn = (UINTN)XenHypercallHvmGetParam (HVM_PARAM_STORE_PFN);\r
- xs.XenStore = (VOID *) (XenStoreGpfn << EFI_PAGE_SHIFT);\r
- DEBUG ((DEBUG_INFO, "XenBusInit: XenBus rings @%p, event channel %x\n",\r
- xs.XenStore, xs.EventChannel));\r
+ XenStoreGpfn = (UINTN)XenHypercallHvmGetParam (HVM_PARAM_STORE_PFN);\r
+ xs.XenStore = (VOID *)(XenStoreGpfn << EFI_PAGE_SHIFT);\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "XenBusInit: XenBus rings @%p, event channel %x\n",\r
+ xs.XenStore,\r
+ xs.EventChannel\r
+ ));\r
\r
InitializeListHead (&xs.ReplyList);\r
InitializeListHead (&xs.WatchEvents);\r
\r
VOID\r
XenStoreDeinit (\r
- IN XENBUS_DEVICE *Dev\r
+ IN XENBUS_DEVICE *Dev\r
)\r
{\r
//\r
// it is stopped.\r
//\r
if (!IsListEmpty (&xs.RegisteredWatches)) {\r
- XENSTORE_WATCH *Watch;\r
- LIST_ENTRY *Entry;\r
+ XENSTORE_WATCH *Watch;\r
+ LIST_ENTRY *Entry;\r
DEBUG ((DEBUG_WARN, "XenStore: RegisteredWatches is not empty, cleaning up..."));\r
Entry = GetFirstNode (&xs.RegisteredWatches);\r
while (!IsNull (&xs.RegisteredWatches, Entry)) {\r
// having cleanup the list RegisteredWatches.\r
//\r
if (!IsListEmpty (&xs.WatchEvents)) {\r
- LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Entry;\r
DEBUG ((DEBUG_WARN, "XenStore: WatchEvents is not empty, cleaning up..."));\r
Entry = GetFirstNode (&xs.WatchEvents);\r
while (!IsNull (&xs.WatchEvents, Entry)) {\r
- XENSTORE_MESSAGE *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
+ XENSTORE_MESSAGE *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
Entry = GetNextNode (&xs.WatchEvents, Entry);\r
RemoveEntryList (&Message->Link);\r
- FreePool ((VOID*)Message->u.Watch.Vector);\r
+ FreePool ((VOID *)Message->u.Watch.Vector);\r
FreePool (Message);\r
}\r
}\r
\r
if (!IsListEmpty (&xs.ReplyList)) {\r
- XENSTORE_MESSAGE *Message;\r
- LIST_ENTRY *Entry;\r
+ XENSTORE_MESSAGE *Message;\r
+ LIST_ENTRY *Entry;\r
Entry = GetFirstNode (&xs.ReplyList);\r
while (!IsNull (&xs.ReplyList, Entry)) {\r
Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
- Entry = GetNextNode (&xs.ReplyList, Entry);\r
+ Entry = GetNextNode (&xs.ReplyList, Entry);\r
RemoveEntryList (&Message->Link);\r
FreePool (Message->u.Reply.Body);\r
FreePool (Message);\r
if (xs.XenStore->server_features & XENSTORE_SERVER_FEATURE_RECONNECTION) {\r
xs.XenStore->connection = XENSTORE_RECONNECT;\r
XenEventChannelNotify (xs.Dev, xs.EventChannel);\r
- while (*(volatile UINT32*)&xs.XenStore->connection == XENSTORE_RECONNECT) {\r
+ while (*(volatile UINT32 *)&xs.XenStore->connection == XENSTORE_RECONNECT) {\r
XenStoreWaitForEvent (xs.EventChannelEvent, EFI_TIMER_PERIOD_MILLISECONDS (100));\r
}\r
} else {\r
xs.XenStore->req_cons = xs.XenStore->req_prod = 0;\r
xs.XenStore->rsp_cons = xs.XenStore->rsp_prod = 0;\r
}\r
+\r
xs.XenStore = NULL;\r
}\r
\r
\r
XENSTORE_STATUS\r
XenStoreListDirectory (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node,\r
- OUT UINT32 *DirectoryCountPtr,\r
- OUT CONST CHAR8 ***DirectoryListPtr\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node,\r
+ OUT UINT32 *DirectoryCountPtr,\r
+ OUT CONST CHAR8 ***DirectoryListPtr\r
)\r
{\r
- CHAR8 *Path;\r
- CHAR8 *TempStr;\r
- UINT32 Len = 0;\r
- XENSTORE_STATUS Status;\r
-\r
- Path = XenStoreJoin (DirectoryPath, Node);\r
- Status = XenStoreSingle (Transaction, XS_DIRECTORY, Path, &Len,\r
- (VOID **) &TempStr);\r
+ CHAR8 *Path;\r
+ CHAR8 *TempStr;\r
+ UINT32 Len = 0;\r
+ XENSTORE_STATUS Status;\r
+\r
+ Path = XenStoreJoin (DirectoryPath, Node);\r
+ Status = XenStoreSingle (\r
+ Transaction,\r
+ XS_DIRECTORY,\r
+ Path,\r
+ &Len,\r
+ (VOID **)&TempStr\r
+ );\r
FreePool (Path);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
return Status;\r
\r
BOOLEAN\r
XenStorePathExists (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *Directory,\r
- IN CONST CHAR8 *Node\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *Directory,\r
+ IN CONST CHAR8 *Node\r
)\r
{\r
- CONST CHAR8 **TempStr;\r
- XENSTORE_STATUS Status;\r
- UINT32 TempNum;\r
-\r
- Status = XenStoreListDirectory (Transaction, Directory, Node,\r
- &TempNum, &TempStr);\r
+ CONST CHAR8 **TempStr;\r
+ XENSTORE_STATUS Status;\r
+ UINT32 TempNum;\r
+\r
+ Status = XenStoreListDirectory (\r
+ Transaction,\r
+ Directory,\r
+ Node,\r
+ &TempNum,\r
+ &TempStr\r
+ );\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
return FALSE;\r
}\r
- FreePool ((VOID*)TempStr);\r
+\r
+ FreePool ((VOID *)TempStr);\r
return TRUE;\r
}\r
\r
XENSTORE_STATUS\r
XenStoreRead (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node,\r
- OUT UINT32 *LenPtr OPTIONAL,\r
- OUT VOID **Result\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node,\r
+ OUT UINT32 *LenPtr OPTIONAL,\r
+ OUT VOID **Result\r
)\r
{\r
- CHAR8 *Path;\r
- VOID *Value;\r
- XENSTORE_STATUS Status;\r
+ CHAR8 *Path;\r
+ VOID *Value;\r
+ XENSTORE_STATUS Status;\r
\r
- Path = XenStoreJoin (DirectoryPath, Node);\r
+ Path = XenStoreJoin (DirectoryPath, Node);\r
Status = XenStoreSingle (Transaction, XS_READ, Path, LenPtr, &Value);\r
FreePool (Path);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
\r
XENSTORE_STATUS\r
XenStoreWrite (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node,\r
- IN CONST CHAR8 *Str\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node,\r
+ IN CONST CHAR8 *Str\r
)\r
{\r
- CHAR8 *Path;\r
- WRITE_REQUEST WriteRequest[2];\r
- XENSTORE_STATUS Status;\r
+ CHAR8 *Path;\r
+ WRITE_REQUEST WriteRequest[2];\r
+ XENSTORE_STATUS Status;\r
\r
Path = XenStoreJoin (DirectoryPath, Node);\r
\r
- WriteRequest[0].Data = (VOID *) Path;\r
- WriteRequest[0].Len = (UINT32)AsciiStrSize (Path);\r
- WriteRequest[1].Data = (VOID *) Str;\r
- WriteRequest[1].Len = (UINT32)AsciiStrLen (Str);\r
+ WriteRequest[0].Data = (VOID *)Path;\r
+ WriteRequest[0].Len = (UINT32)AsciiStrSize (Path);\r
+ WriteRequest[1].Data = (VOID *)Str;\r
+ WriteRequest[1].Len = (UINT32)AsciiStrLen (Str);\r
\r
Status = XenStoreTalkv (Transaction, XS_WRITE, WriteRequest, 2, NULL, NULL);\r
FreePool (Path);\r
\r
XENSTORE_STATUS\r
XenStoreRemove (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node\r
)\r
{\r
- CHAR8 *Path;\r
- XENSTORE_STATUS Status;\r
+ CHAR8 *Path;\r
+ XENSTORE_STATUS Status;\r
\r
- Path = XenStoreJoin (DirectoryPath, Node);\r
+ Path = XenStoreJoin (DirectoryPath, Node);\r
Status = XenStoreSingle (Transaction, XS_RM, Path, NULL, NULL);\r
FreePool (Path);\r
\r
OUT XENSTORE_TRANSACTION *Transaction\r
)\r
{\r
- CHAR8 *IdStr;\r
- XENSTORE_STATUS Status;\r
-\r
- Status = XenStoreSingle (XST_NIL, XS_TRANSACTION_START, "", NULL,\r
- (VOID **) &IdStr);\r
+ CHAR8 *IdStr;\r
+ XENSTORE_STATUS Status;\r
+\r
+ Status = XenStoreSingle (\r
+ XST_NIL,\r
+ XS_TRANSACTION_START,\r
+ "",\r
+ NULL,\r
+ (VOID **)&IdStr\r
+ );\r
if (Status == XENSTORE_STATUS_SUCCESS) {\r
Transaction->Id = (UINT32)AsciiStrDecimalToUintn (IdStr);\r
FreePool (IdStr);\r
\r
XENSTORE_STATUS\r
XenStoreTransactionEnd (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN BOOLEAN Abort\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN BOOLEAN Abort\r
)\r
{\r
- CHAR8 AbortStr[2];\r
+ CHAR8 AbortStr[2];\r
\r
AbortStr[0] = Abort ? 'F' : 'T';\r
AbortStr[1] = '\0';\r
XENSTORE_STATUS\r
EFIAPI\r
XenStoreVSPrint (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node,\r
- IN CONST CHAR8 *FormatString,\r
- IN VA_LIST Marker\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node,\r
+ IN CONST CHAR8 *FormatString,\r
+ IN VA_LIST Marker\r
)\r
{\r
- CHAR8 *Buf;\r
- XENSTORE_STATUS Status;\r
- UINTN BufSize;\r
- VA_LIST Marker2;\r
+ CHAR8 *Buf;\r
+ XENSTORE_STATUS Status;\r
+ UINTN BufSize;\r
+ VA_LIST Marker2;\r
\r
VA_COPY (Marker2, Marker);\r
BufSize = SPrintLengthAsciiFormat (FormatString, Marker2) + 1;\r
XENSTORE_STATUS\r
EFIAPI\r
XenStoreSPrint (\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node,\r
- IN CONST CHAR8 *FormatString,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node,\r
+ IN CONST CHAR8 *FormatString,\r
...\r
)\r
{\r
- VA_LIST Marker;\r
- XENSTORE_STATUS Status;\r
+ VA_LIST Marker;\r
+ XENSTORE_STATUS Status;\r
\r
VA_START (Marker, FormatString);\r
Status = XenStoreVSPrint (Transaction, DirectoryPath, Node, FormatString, Marker);\r
)\r
{\r
/* Pointer in ascii is the token. */\r
- CHAR8 Token[sizeof (XENSTORE_WATCH) * 2 + 1];\r
- XENSTORE_STATUS Status;\r
- XENSTORE_WATCH *Watch;\r
+ CHAR8 Token[sizeof (XENSTORE_WATCH) * 2 + 1];\r
+ XENSTORE_STATUS Status;\r
+ XENSTORE_WATCH *Watch;\r
\r
- Watch = AllocateZeroPool (sizeof (XENSTORE_WATCH));\r
+ Watch = AllocateZeroPool (sizeof (XENSTORE_WATCH));\r
Watch->Signature = XENSTORE_WATCH_SIGNATURE;\r
- Watch->Node = XenStoreJoin (DirectoryPath, Node);\r
+ Watch->Node = XenStoreJoin (DirectoryPath, Node);\r
\r
EfiAcquireLock (&xs.RegisteredWatchesLock);\r
InsertTailList (&xs.RegisteredWatches, &Watch->Link);\r
EfiReleaseLock (&xs.RegisteredWatchesLock);\r
\r
- AsciiSPrint (Token, sizeof (Token), "%p", (VOID*) Watch);\r
+ AsciiSPrint (Token, sizeof (Token), "%p", (VOID *)Watch);\r
Status = XenStoreWatch (Watch->Node, Token);\r
\r
/* Ignore errors due to multiple registration. */\r
\r
VOID\r
XenStoreUnregisterWatch (\r
- IN XENSTORE_WATCH *Watch\r
+ IN XENSTORE_WATCH *Watch\r
)\r
{\r
- CHAR8 Token[sizeof (Watch) * 2 + 1];\r
- LIST_ENTRY *Entry;\r
+ CHAR8 Token[sizeof (Watch) * 2 + 1];\r
+ LIST_ENTRY *Entry;\r
\r
ASSERT (Watch->Signature == XENSTORE_WATCH_SIGNATURE);\r
\r
- AsciiSPrint (Token, sizeof (Token), "%p", (VOID *) Watch);\r
+ AsciiSPrint (Token, sizeof (Token), "%p", (VOID *)Watch);\r
if (XenStoreFindWatch (Token) == NULL) {\r
return;\r
}\r
EfiAcquireLock (&xs.WatchEventsLock);\r
Entry = GetFirstNode (&xs.WatchEvents);\r
while (!IsNull (&xs.WatchEvents, Entry)) {\r
- XENSTORE_MESSAGE *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
+ XENSTORE_MESSAGE *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
Entry = GetNextNode (&xs.WatchEvents, Entry);\r
if (Message->u.Watch.Handle == Watch) {\r
RemoveEntryList (&Message->Link);\r
- FreePool ((VOID*)Message->u.Watch.Vector);\r
+ FreePool ((VOID *)Message->u.Watch.Vector);\r
FreePool (Message);\r
}\r
}\r
+\r
EfiReleaseLock (&xs.WatchEventsLock);\r
\r
FreePool (Watch->Node);\r
FreePool (Watch);\r
}\r
\r
-\r
//\r
// XENBUS protocol\r
//\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusWaitForWatch (\r
- IN XENBUS_PROTOCOL *This,\r
- IN VOID *Token\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN VOID *Token\r
)\r
{\r
return XenStoreWaitWatch (Token);\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusXenStoreRead (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *Node,\r
- OUT VOID **Value\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *Node,\r
+ OUT VOID **Value\r
)\r
{\r
return XenStoreRead (Transaction, This->Node, Node, NULL, Value);\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusXenStoreBackendRead (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *Node,\r
- OUT VOID **Value\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *Node,\r
+ OUT VOID **Value\r
)\r
{\r
return XenStoreRead (Transaction, This->Backend, Node, NULL, Value);\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusXenStoreRemove (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN const char *Node\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN const char *Node\r
)\r
{\r
return XenStoreRemove (Transaction, This->Node, Node);\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusXenStoreTransactionEnd (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN BOOLEAN Abort\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN BOOLEAN Abort\r
)\r
{\r
return XenStoreTransactionEnd (Transaction, Abort);\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusXenStoreSPrint (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST XENSTORE_TRANSACTION *Transaction,\r
- IN CONST CHAR8 *DirectoryPath,\r
- IN CONST CHAR8 *Node,\r
- IN CONST CHAR8 *FormatString,\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN CONST CHAR8 *DirectoryPath,\r
+ IN CONST CHAR8 *Node,\r
+ IN CONST CHAR8 *FormatString,\r
...\r
)\r
{\r
- VA_LIST Marker;\r
- XENSTORE_STATUS Status;\r
+ VA_LIST Marker;\r
+ XENSTORE_STATUS Status;\r
\r
VA_START (Marker, FormatString);\r
Status = XenStoreVSPrint (Transaction, DirectoryPath, Node, FormatString, Marker);\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusRegisterWatch (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST CHAR8 *Node,\r
- OUT VOID **Token\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST CHAR8 *Node,\r
+ OUT VOID **Token\r
)\r
{\r
- return XenStoreRegisterWatch (This->Node, Node, (XENSTORE_WATCH **) Token);\r
+ return XenStoreRegisterWatch (This->Node, Node, (XENSTORE_WATCH **)Token);\r
}\r
\r
XENSTORE_STATUS\r
EFIAPI\r
XenBusRegisterWatchBackend (\r
- IN XENBUS_PROTOCOL *This,\r
- IN CONST CHAR8 *Node,\r
- OUT VOID **Token\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST CHAR8 *Node,\r
+ OUT VOID **Token\r
)\r
{\r
- return XenStoreRegisterWatch (This->Backend, Node, (XENSTORE_WATCH **) Token);\r
+ return XenStoreRegisterWatch (This->Backend, Node, (XENSTORE_WATCH **)Token);\r
}\r
\r
VOID\r
IN VOID *Token\r
)\r
{\r
- XenStoreUnregisterWatch ((XENSTORE_WATCH *) Token);\r
+ XenStoreUnregisterWatch ((XENSTORE_WATCH *)Token);\r
}\r