)
{
ULONG Id;
- KIRQL Irql;
PXENBUS_STORE_SEGMENT Segment;
va_list Arguments;
NTSTATUS status;
Request->Header.type = Type;
Request->Header.tx_id = Id;
Request->Header.len = 0;
-
- KeAcquireSpinLock(&Context->Lock, &Irql);
Request->Header.req_id = Context->RequestId++;
- KeReleaseSpinLock(&Context->Lock, Irql);
Request->Count = 0;
Segment = &Request->Segment[Request->Count++];
PXENBUS_STORE_CONTEXT Context = Interface->Context;
PVOID Caller;
XENBUS_STORE_REQUEST Request;
+ KIRQL Irql;
PXENBUS_STORE_RESPONSE Response;
PXENBUS_STORE_BUFFER Buffer;
NTSTATUS status;
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
if (Prefix == NULL) {
status = StorePrepareRequest(Context,
&Request,
NULL, 0);
}
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
if (!NT_SUCCESS(status))
goto fail1;
)
{
XENBUS_STORE_REQUEST Request;
+ KIRQL Irql;
PXENBUS_STORE_RESPONSE Response;
NTSTATUS status;
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
if (Prefix == NULL) {
status = StorePrepareRequest(Context,
&Request,
NULL, 0);
}
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
if (!NT_SUCCESS(status))
goto fail1;
{
PXENBUS_STORE_CONTEXT Context = Interface->Context;
XENBUS_STORE_REQUEST Request;
+ KIRQL Irql;
PXENBUS_STORE_RESPONSE Response;
NTSTATUS status;
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
if (Prefix == NULL) {
status = StorePrepareRequest(Context,
&Request,
NULL, 0);
}
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
if (!NT_SUCCESS(status))
goto fail1;
PXENBUS_STORE_CONTEXT Context = Interface->Context;
PVOID Caller;
XENBUS_STORE_REQUEST Request;
+ KIRQL Irql;
PXENBUS_STORE_RESPONSE Response;
PXENBUS_STORE_BUFFER Buffer;
NTSTATUS status;
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
if (Prefix == NULL) {
status = StorePrepareRequest(Context,
&Request,
NULL, 0);
}
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
if (!NT_SUCCESS(status))
goto fail1;
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
status = StorePrepareRequest(Context,
&Request,
NULL,
XS_TRANSACTION_START,
"", 1,
NULL, 0);
+
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
ASSERT(NT_SUCCESS(status));
Response = StoreSubmitRequest(Context, &Request);
ASSERT3U(Transaction->Magic, ==, STORE_TRANSACTION_MAGIC);
+ RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+
KeAcquireSpinLock(&Context->Lock, &Irql);
status = STATUS_RETRY;
if (!Transaction->Active)
goto done;
- KeReleaseSpinLock(&Context->Lock, Irql);
-
- RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
-
status = StorePrepareRequest(Context,
&Request,
Transaction,
XS_TRANSACTION_END,
(Commit) ? "T" : "F", 2,
NULL, 0);
+
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
ASSERT(NT_SUCCESS(status));
Response = StoreSubmitRequest(Context, &Request);
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
status = StorePrepareRequest(Context,
&Request,
NULL,
Token, strlen(Token),
"", 1,
NULL, 0);
+
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
ASSERT(NT_SUCCESS(status));
Response = StoreSubmitRequest(Context, &Request);
Path = Watch->Path;
- KeAcquireSpinLock(&Context->Lock, &Irql);
-
- if (!Watch->Active)
- goto done;
-
- KeReleaseSpinLock(&Context->Lock, Irql);
-
status = RtlStringCbPrintfA(Token,
sizeof (Token),
"TOK|%p|%04X",
RtlZeroMemory(&Request, sizeof (XENBUS_STORE_REQUEST));
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
+ if (!Watch->Active)
+ goto done;
+
status = StorePrepareRequest(Context,
&Request,
NULL,
Token, strlen(Token),
"", 1,
NULL, 0);
+
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
ASSERT(NT_SUCCESS(status));
Response = StoreSubmitRequest(Context, &Request);
{
PXENBUS_STORE_CONTEXT Context = Interface->Context;
XENBUS_STORE_REQUEST Request;
+ KIRQL Irql;
PXENBUS_STORE_RESPONSE Response;
NTSTATUS status;
ULONG Index;
Length -= Used;
}
+ KeAcquireSpinLock(&Context->Lock, &Irql);
+
status = StorePrepareRequest(Context,
&Request,
Transaction,
"", 1,
PermissionString, XENSTORE_PAYLOAD_MAX - Length,
NULL, 0);
+
+ KeReleaseSpinLock(&Context->Lock, Irql);
+
if (!NT_SUCCESS(status))
goto fail4;