Add some definitions for efi event in Uefi/UefiSpec.h to follow spec.
Changed old event definitions reference to these new event definitions. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2729 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -321,7 +321,7 @@ CirrusLogic5430UgaDrawBlt (
|
||||
// We would not want a timer based event (Cursor, ...) to come in while we are
|
||||
// doing this operation.
|
||||
//
|
||||
OriginalTPL = gBS->RaiseTPL (EFI_TPL_NOTIFY);
|
||||
OriginalTPL = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
|
||||
switch (BltOperation) {
|
||||
case EfiUgaVideoToBltBuffer:
|
||||
|
@@ -2138,7 +2138,7 @@ EhciAsyncInterruptTransfer (
|
||||
//
|
||||
if (!IsNewTransfer) {
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
|
||||
Status = DeleteAsyncRequestTransfer (
|
||||
HcDev,
|
||||
|
@@ -239,7 +239,7 @@ Returns:
|
||||
MemoryHeader = HcDev->MemoryHeader;
|
||||
ASSERT (MemoryHeader != NULL);
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_NOTIFY + 1);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY + 1);
|
||||
|
||||
//
|
||||
// allocate unit is 32 bytes (align on 32 byte)
|
||||
@@ -297,7 +297,7 @@ Returns:
|
||||
return Status;
|
||||
}
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_NOTIFY + 1);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY + 1);
|
||||
|
||||
|
||||
//
|
||||
@@ -353,7 +353,7 @@ Returns:
|
||||
UINTN Count;
|
||||
UINTN RealAllocSize;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY + 1);
|
||||
|
||||
MemoryHeader = HcDev->MemoryHeader;
|
||||
@@ -419,7 +419,7 @@ Returns:
|
||||
// the TempHeaderPtr is pointing to nonsense content.
|
||||
//
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
FreeMemoryHeader (HcDev, TempHeaderPtr);
|
||||
FreeMemoryHeader (HcDev, TempHeaderPtr);
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY + 1);
|
||||
//
|
||||
// reset the TempHeaderPtr, continue search for
|
||||
|
@@ -253,7 +253,7 @@ Returns:
|
||||
//
|
||||
if (HcDev->Is64BitCapable != 0) {
|
||||
HcDev->High32BitAddr = (UINT32) GET_32B_TO_63B (FrameBuffer);
|
||||
|
||||
|
||||
Status = SetCtrlDataStructSeg (HcDev);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((gEHCErrorLevel, "EHCI: SetCtrlDataStructSeg Failed\n"));
|
||||
@@ -347,8 +347,8 @@ Returns:
|
||||
--*/
|
||||
{
|
||||
return gBS->CreateEvent (
|
||||
EFI_EVENT_TIMER | EFI_EVENT_NOTIFY_SIGNAL,
|
||||
EFI_TPL_NOTIFY,
|
||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||
TPL_NOTIFY,
|
||||
NotifyFunction,
|
||||
HcDev,
|
||||
&HcDev->AsyncRequestEvent
|
||||
@@ -1868,7 +1868,7 @@ Returns:
|
||||
|
||||
QhPtr->Qh.HeadReclamationFlag = FALSE;
|
||||
|
||||
if (QhPtr->TransferType == ASYNC_INTERRUPT_TRANSFER) {
|
||||
if (QhPtr->TransferType == ASYNC_INTERRUPT_TRANSFER) {
|
||||
|
||||
//
|
||||
// AsyncInterruptTransfer Qh
|
||||
@@ -2596,7 +2596,7 @@ Returns:
|
||||
*DataMap = NULL;
|
||||
break;
|
||||
|
||||
default:
|
||||
default:
|
||||
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
@@ -1,12 +1,12 @@
|
||||
/** @file
|
||||
Copyright (c) 2006 - 2007 Intel Corporation. <BR>
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
@par Revision Reference:
|
||||
This module is modified from DXE\IDE module for Ide Contriller Init support
|
||||
@@ -89,7 +89,7 @@ IDEBusDriverBindingSupported (
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Close protocol, don't use device path protocol in the .Support() function
|
||||
//
|
||||
@@ -140,7 +140,7 @@ IDEBusDriverBindingSupported (
|
||||
// ***********************************************************************************
|
||||
//
|
||||
/**
|
||||
Start this driver on Controller by detecting all disks and installing
|
||||
Start this driver on Controller by detecting all disks and installing
|
||||
BlockIo protocol on them.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@@ -210,7 +210,7 @@ IDEBusDriverBindingStart (
|
||||
if ((EFI_ERROR (Status)) && (Status != EFI_ALREADY_STARTED)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Now open the IDE_CONTROLLER_INIT protocol. Step7.1
|
||||
//
|
||||
@@ -429,7 +429,7 @@ IDEBusDriverBindingStart (
|
||||
if (!(ConfigurationOptions & (1 << (IdeChannel * 2 + IdeDevice)))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// The device has been scanned in another Start(), No need to scan it again
|
||||
// for perf optimization.
|
||||
@@ -437,7 +437,7 @@ IDEBusDriverBindingStart (
|
||||
if (IdeBusDriverPrivateData->HaveScannedDevice[IdeChannel * 2 + IdeDevice]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// create child handle for the detected device.
|
||||
//
|
||||
@@ -664,7 +664,7 @@ IDEBusDriverBindingStart (
|
||||
if ((IdeBlkIoDevicePtr->Type == IdeHardDisk) || (IdeBlkIoDevicePtr->Type == Ide48bitAddressingHardDisk)) {
|
||||
Status = SetDriveParameters (IdeBlkIoDevicePtr, &DriveParameters);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Record PIO mode used in private data
|
||||
//
|
||||
@@ -715,13 +715,13 @@ IDEBusDriverBindingStart (
|
||||
(EFI_IO_BUS_ATA_ATAPI | EFI_P_PC_ENABLE),
|
||||
IdeBlkIoDevicePtr->DevicePath
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Create event to clear pending IDE interrupt
|
||||
//
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES,
|
||||
EFI_TPL_NOTIFY,
|
||||
EVT_SIGNAL_EXIT_BOOT_SERVICES,
|
||||
TPL_NOTIFY,
|
||||
ClearInterrupt,
|
||||
IdeBlkIoDevicePtr,
|
||||
&IdeBlkIoDevicePtr->ExitBootServiceEvent
|
||||
@@ -735,7 +735,7 @@ IDEBusDriverBindingStart (
|
||||
// end of 2nd outer loop ==========
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// All configurations done! Notify IdeController to do post initialization
|
||||
// work such as saving IDE controller PCI settings for S3 resume
|
||||
@@ -808,7 +808,7 @@ ErrorExit:
|
||||
// ***********************************************************************************
|
||||
//
|
||||
/**
|
||||
Stop this driver on Controller Handle.
|
||||
Stop this driver on Controller Handle.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param DeviceHandle Handle of device to stop driver on
|
||||
@@ -1003,7 +1003,7 @@ DeRegisterIdeDevice (
|
||||
);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Release allocated resources
|
||||
//
|
||||
@@ -1037,7 +1037,7 @@ IDEBlkIoReset (
|
||||
EFI_STATUS Status;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);
|
||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||
|
||||
IdeBlkIoDevice = IDE_BLOCK_IO_DEV_FROM_THIS (This);
|
||||
//
|
||||
@@ -1058,7 +1058,7 @@ IDEBlkIoReset (
|
||||
Status = EFI_DEVICE_ERROR;
|
||||
goto Done;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// for ATAPI device, using ATAPI reset method
|
||||
//
|
||||
@@ -1099,7 +1099,7 @@ IDEBlkIoReadBlocks (
|
||||
EFI_STATUS Status;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);
|
||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||
|
||||
IdeBlkIoDevice = IDE_BLOCK_IO_DEV_FROM_THIS (This);
|
||||
|
||||
@@ -1127,7 +1127,7 @@ IDEBlkIoReadBlocks (
|
||||
Status = EFI_DEVICE_ERROR;
|
||||
goto Done;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// for ATAPI device, using ATAPI read block's mechanism
|
||||
//
|
||||
@@ -1172,8 +1172,8 @@ IDEBlkIoWriteBlocks (
|
||||
EFI_STATUS Status;
|
||||
EFI_TPL OldTpl;
|
||||
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);
|
||||
|
||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||
|
||||
IdeBlkIoDevice = IDE_BLOCK_IO_DEV_FROM_THIS (This);
|
||||
//
|
||||
// Requery IDE IO resources in case of the switch of native and legacy modes
|
||||
@@ -1184,7 +1184,7 @@ IDEBlkIoWriteBlocks (
|
||||
// for ATA device, using ATA write block's mechanism
|
||||
//
|
||||
if (IdeBlkIoDevice->Type == IdeHardDisk ||
|
||||
IdeBlkIoDevice->Type == Ide48bitAddressingHardDisk) {
|
||||
IdeBlkIoDevice->Type == Ide48bitAddressingHardDisk) {
|
||||
|
||||
Status = AtaBlkIoWriteBlocks (
|
||||
IdeBlkIoDevice,
|
||||
@@ -1200,7 +1200,7 @@ IDEBlkIoWriteBlocks (
|
||||
Status = EFI_DEVICE_ERROR;
|
||||
goto Done;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// for ATAPI device, using ATAPI write block's mechanism
|
||||
//
|
||||
@@ -1211,7 +1211,7 @@ IDEBlkIoWriteBlocks (
|
||||
BufferSize,
|
||||
Buffer
|
||||
);
|
||||
|
||||
|
||||
Done:
|
||||
gBS->RestoreTPL (OldTpl);
|
||||
return Status;
|
||||
|
@@ -693,7 +693,7 @@ Returns:
|
||||
//
|
||||
// Raise TPL to high level to disable timer interrupt while the BAR is probed
|
||||
//
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_HIGH_LEVEL);
|
||||
OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);
|
||||
|
||||
PciIoWrite (PciIo, EfiPciIoWidthUint32, (UINT8) Offset, 1, &gAllOne);
|
||||
PciIoRead (PciIo, EfiPciIoWidthUint32, (UINT8) Offset, 1, &Value);
|
||||
@@ -759,7 +759,7 @@ Returns:
|
||||
//
|
||||
// Raise TPL to high level to disable timer interrupt while the BAR is probed
|
||||
//
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_HIGH_LEVEL);
|
||||
OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);
|
||||
|
||||
PciSetCommandRegister (PciIoDevice, *Command);
|
||||
PciReadCommandRegister (PciIoDevice, Command);
|
||||
@@ -784,7 +784,7 @@ Returns:
|
||||
//
|
||||
// Raise TPL to high level to disable timer interrupt while the BAR is probed
|
||||
//
|
||||
OldTpl = gBS->RaiseTPL (EFI_TPL_HIGH_LEVEL);
|
||||
OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);
|
||||
|
||||
PciSetBridgeControlRegister (PciIoDevice, *BridgeControl);
|
||||
PciReadBridgeControlRegister (PciIoDevice, BridgeControl);
|
||||
|
@@ -1,21 +1,21 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
PciHotPlugSupport.c
|
||||
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
|
||||
|
||||
Revision History
|
||||
|
||||
@@ -254,8 +254,8 @@ Returns:
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_NOTIFY_SIGNAL,
|
||||
EFI_TPL_CALLBACK,
|
||||
EVT_NOTIFY_SIGNAL,
|
||||
TPL_CALLBACK,
|
||||
PciHPCInitialized,
|
||||
gPciRootHpcData + HpIndex,
|
||||
&((gPciRootHpcData + HpIndex)->Event)
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,13 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
@@ -30,7 +30,7 @@ PXE_SW_UNDI *pxe = 0; // 3.0 entry point
|
||||
PXE_SW_UNDI *pxe_31 = 0; // 3.1 entry
|
||||
UNDI32_DEV *UNDI32DeviceList[MAX_NIC_INTERFACES];
|
||||
|
||||
NII_TABLE *UnidiDataPointer=NULL;
|
||||
NII_TABLE *UnidiDataPointer=NULL;
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
@@ -103,7 +103,7 @@ UndiNotifyExitBs (
|
||||
|
||||
Routine Description:
|
||||
|
||||
When EFI is shuting down the boot services, we need to install a
|
||||
When EFI is shuting down the boot services, we need to install a
|
||||
configuration table for UNDI to work at runtime!
|
||||
|
||||
Arguments:
|
||||
@@ -161,8 +161,8 @@ Returns:
|
||||
EFI_EVENT Event;
|
||||
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES,
|
||||
EFI_TPL_NOTIFY,
|
||||
EVT_SIGNAL_EXIT_BOOT_SERVICES,
|
||||
TPL_NOTIFY,
|
||||
UndiNotifyExitBs,
|
||||
NULL,
|
||||
&Event
|
||||
@@ -191,15 +191,15 @@ Routine Description:
|
||||
Arguments:
|
||||
|
||||
This - Protocol instance pointer.
|
||||
|
||||
|
||||
Controller - Handle of device to test.
|
||||
|
||||
|
||||
RemainingDevicePath - Not used.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - This driver supports this device.
|
||||
|
||||
|
||||
other - This driver does not support this device.
|
||||
|
||||
--*/
|
||||
@@ -305,15 +305,15 @@ Routine Description:
|
||||
Arguments:
|
||||
|
||||
This - Protocol instance pointer.
|
||||
|
||||
|
||||
Controller - Handle of device to work with.
|
||||
|
||||
|
||||
RemainingDevicePath - Not used, always produce all possible children.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - This driver is added to Controller.
|
||||
|
||||
|
||||
other - This driver does not support this device.
|
||||
|
||||
--*/
|
||||
@@ -325,7 +325,7 @@ Returns:
|
||||
UINT16 NewCommand;
|
||||
UINT8 *TmpPxePointer;
|
||||
EFI_PCI_IO_PROTOCOL *PciIoFncs;
|
||||
UINTN Len;
|
||||
UINTN Len;
|
||||
|
||||
Status = gBS->OpenProtocol (
|
||||
Controller,
|
||||
@@ -538,7 +538,7 @@ Returns:
|
||||
}
|
||||
|
||||
//
|
||||
// if the table exists, free it and alloc again, or alloc it directly
|
||||
// if the table exists, free it and alloc again, or alloc it directly
|
||||
//
|
||||
if (UnidiDataPointer != NULL) {
|
||||
Status = gBS->FreePool(UnidiDataPointer);
|
||||
@@ -553,7 +553,7 @@ Returns:
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto UndiErrorAllocDataPointer;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Open For Child Device
|
||||
//
|
||||
@@ -750,7 +750,7 @@ Routine Description:
|
||||
Arguments:
|
||||
|
||||
UnqId - Runtime O/S routine might use this, this temp routine does not use it
|
||||
|
||||
|
||||
MicroSeconds - Determines the length of pause.
|
||||
|
||||
Returns:
|
||||
@@ -780,13 +780,13 @@ Routine Description:
|
||||
Arguments:
|
||||
|
||||
UnqId - Runtime O/S routine may use this field, this temp routine does not.
|
||||
|
||||
|
||||
ReadWrite - Determine if it is an I/O or Memory Read/Write Operation.
|
||||
|
||||
|
||||
Len - Determines the width of the data operation.
|
||||
|
||||
|
||||
Port - What port to Read/Write from.
|
||||
|
||||
|
||||
BuffAddr - Address to read to or write from.
|
||||
|
||||
Returns:
|
||||
@@ -880,15 +880,15 @@ Routine Description:
|
||||
Arguments:
|
||||
|
||||
DevPtr - Pointer which will point to the newly created device path with the MAC node attached.
|
||||
|
||||
|
||||
BaseDevPtr - Pointer to the device path which the UNDI device driver is latching on to.
|
||||
|
||||
|
||||
AdapterInfo - Pointer to the NIC data structure information which the UNDI driver is layering on..
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - A MAC address was successfully appended to the Base Device Path.
|
||||
|
||||
|
||||
other - Not enough resources available to create new Device Path node.
|
||||
|
||||
--*/
|
||||
@@ -1020,7 +1020,7 @@ Arguments:
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Install a GUID/Pointer pair into the system's configuration table.
|
||||
|
||||
|
||||
other - Did not successfully install the GUID/Pointer pair into the configuration table.
|
||||
|
||||
--*/
|
||||
@@ -1036,12 +1036,12 @@ Returns:
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
if(UnidiDataPointer == NULL) {
|
||||
if(UnidiDataPointer == NULL) {
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
UndiData = (NII_TABLE *)UnidiDataPointer;
|
||||
|
||||
|
||||
UndiData = (NII_TABLE *)UnidiDataPointer;
|
||||
|
||||
UndiData->NumEntries = pxe_31->IFcnt;
|
||||
UndiData->NextLink = NULL;
|
||||
|
||||
|
Reference in New Issue
Block a user