mirror of
https://github.com/pspdev/pspsdk.git
synced 2025-10-04 01:00:09 +00:00
Merge pull request #40 from pineapplemachine/add-missing-definitions
Add more definitions (Updated)
This commit is contained in:
@@ -91,6 +91,7 @@ AC_CONFIG_FILES([Makefile
|
|||||||
src/ctrl/Makefile
|
src/ctrl/Makefile
|
||||||
src/debug/Makefile
|
src/debug/Makefile
|
||||||
src/display/Makefile
|
src/display/Makefile
|
||||||
|
src/dmac/Makefile
|
||||||
src/fpu/Makefile
|
src/fpu/Makefile
|
||||||
src/ge/Makefile
|
src/ge/Makefile
|
||||||
src/gu/Makefile
|
src/gu/Makefile
|
||||||
|
@@ -5,6 +5,7 @@ SUBDIRS = \
|
|||||||
ctrl \
|
ctrl \
|
||||||
debug \
|
debug \
|
||||||
display \
|
display \
|
||||||
|
dmac \
|
||||||
fpu \
|
fpu \
|
||||||
ge \
|
ge \
|
||||||
gu \
|
gu \
|
||||||
|
@@ -33,6 +33,20 @@ extern "C" {
|
|||||||
|
|
||||||
/** Used to request the next available hardware channel. */
|
/** Used to request the next available hardware channel. */
|
||||||
#define PSP_AUDIO_NEXT_CHANNEL (-1)
|
#define PSP_AUDIO_NEXT_CHANNEL (-1)
|
||||||
|
|
||||||
|
/** Error codes used as return values for the Audio Driver. */
|
||||||
|
#define SCE_AUDIO_ERROR_NOT_INITIALIZED (0x80260001)
|
||||||
|
#define SCE_AUDIO_ERROR_OUTPUT_BUSY (0x80260002)
|
||||||
|
#define SCE_AUDIO_ERROR_INVALID_CH (0x80260003)
|
||||||
|
#define SCE_AUDIO_ERROR_PRIV_REQUIRED (0x80260004)
|
||||||
|
#define SCE_AUDIO_ERROR_NOT_FOUND (0x80260005)
|
||||||
|
#define SCE_AUDIO_ERROR_INVALID_SIZE (0x80260006)
|
||||||
|
#define SCE_AUDIO_ERROR_INVALID_FORMAT (0x80260007)
|
||||||
|
#define SCE_AUDIO_ERROR_NOT_RESERVED (0x80260008)
|
||||||
|
#define SCE_AUDIO_ERROR_NOT_OUTPUT (0x80260009)
|
||||||
|
#define SCE_AUDIO_ERROR_INVALID_FREQUENCY (0x8026000A)
|
||||||
|
#define SCE_AUDIO_ERROR_INVALID_VOLUME (0x8026000B)
|
||||||
|
#define SCE_AUDIO_ERROR_INPUT_BUSY (0x80260010)
|
||||||
|
|
||||||
enum PspAudioFormats
|
enum PspAudioFormats
|
||||||
{
|
{
|
||||||
|
23
src/dmac/Makefile.am
Normal file
23
src/dmac/Makefile.am
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
libdir := @PSPSDK_LIBDIR@
|
||||||
|
|
||||||
|
CC = @PSP_CC@
|
||||||
|
CCAS = $(CC)
|
||||||
|
AR = @PSP_AR@
|
||||||
|
RANLIB = @PSP_RANLIB@
|
||||||
|
|
||||||
|
CPPFLAGS = -I$(top_srcdir)/src/base -I$(top_srcdir)/src/kernel
|
||||||
|
CFLAGS = @PSPSDK_CFLAGS@
|
||||||
|
CCASFLAGS = $(CFLAGS)
|
||||||
|
|
||||||
|
DMAC_OBJS := sceDmac_0000.o sceDmac_0001.o sceDmac_0002.o
|
||||||
|
|
||||||
|
libpspdmacincludedir := @PSPSDK_INCLUDEDIR@
|
||||||
|
libpspdmacinclude_HEADERS := pspdmac.h
|
||||||
|
|
||||||
|
lib_LIBRARIES := libpspdmac.a
|
||||||
|
libpspdmac_a_SOURCES := sceDmac.S
|
||||||
|
libpspdmac_a_LIBADD := $(DMAC_OBJS)
|
||||||
|
|
||||||
|
$(DMAC_OBJS): sceDmac.S
|
||||||
|
$(AM_V_CPPAS)$(CPPASCOMPILE) -DF_$* $< -c -o $@
|
24
src/dmac/pspdmac.h
Normal file
24
src/dmac/pspdmac.h
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* PSP Software Development Kit - http://www.pspdev.org
|
||||||
|
* -----------------------------------------------------------------------
|
||||||
|
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
||||||
|
*
|
||||||
|
* dmac.c - A DMAC function
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016 173210 <root.3.173210@live.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <psptypes.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy data in memory using DMAC
|
||||||
|
*
|
||||||
|
* @param dst - The pointer to the destination
|
||||||
|
* @param src - The pointer to the source
|
||||||
|
* @param n - The size of data
|
||||||
|
*
|
||||||
|
* @return 0 on success; otherwise an error code
|
||||||
|
*/
|
||||||
|
int sceDmacMemcpy(void *dst, const void *src, SceSize n);
|
||||||
|
|
||||||
|
int sceDmacTryMemcpy(void *dst, const void *src, SceSize n);
|
11
src/dmac/sceDmac.S
Normal file
11
src/dmac/sceDmac.S
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#include "pspimport.s"
|
||||||
|
|
||||||
|
#ifdef F_sceDmac_0000
|
||||||
|
IMPORT_START "sceDmac", 0x40010011
|
||||||
|
#endif
|
||||||
|
#ifdef F_sceDmac_0001
|
||||||
|
IMPORT_FUNC "sceDmac", 0x617F3FE6, sceDmacMemcpy
|
||||||
|
#endif
|
||||||
|
#ifdef F_sceDmac_0002
|
||||||
|
IMPORT_FUNC "sceDmac", 0xD97F94D8, sceDmacTryMemcpy
|
||||||
|
#endif
|
@@ -14,7 +14,7 @@ IO_OBJS = IoFileMgrForUser_0000.o IoFileMgrForUser_0001.o IoFileMgrForUser_0002.
|
|||||||
|
|
||||||
KERNEL_OBJS = Kernel_Library_0000.o Kernel_Library_0001.o Kernel_Library_0002.o Kernel_Library_0003.o Kernel_Library_0004.o Kernel_Library_0005.o
|
KERNEL_OBJS = Kernel_Library_0000.o Kernel_Library_0001.o Kernel_Library_0002.o Kernel_Library_0003.o Kernel_Library_0004.o Kernel_Library_0005.o
|
||||||
|
|
||||||
MODMGR_OBJS = ModuleMgrForUser_0000.o ModuleMgrForUser_0001.o ModuleMgrForUser_0002.o ModuleMgrForUser_0003.o ModuleMgrForUser_0004.o ModuleMgrForUser_0005.o ModuleMgrForUser_0006.o ModuleMgrForUser_0007.o ModuleMgrForUser_0008.o ModuleMgrForUser_0009.o ModuleMgrForUser_0010.o ModuleMgrForUser_0011.o
|
MODMGR_OBJS = ModuleMgrForUser_0000.o ModuleMgrForUser_0001.o ModuleMgrForUser_0002.o ModuleMgrForUser_0003.o ModuleMgrForUser_0004.o ModuleMgrForUser_0005.o ModuleMgrForUser_0006.o ModuleMgrForUser_0007.o ModuleMgrForUser_0008.o ModuleMgrForUser_0009.o ModuleMgrForUser_0010.o ModuleMgrForUser_0011.o ModuleMgrForUser_0012.o
|
||||||
|
|
||||||
STDIO_OBJS = StdioForUser_0000.o StdioForUser_0001.o StdioForUser_0002.o StdioForUser_0003.o StdioForUser_0004.o StdioForUser_0005.o StdioForUser_0006.o StdioForUser_0007.o StdioForUser_0008.o StdioForUser_0009.o
|
STDIO_OBJS = StdioForUser_0000.o StdioForUser_0001.o StdioForUser_0002.o StdioForUser_0003.o StdioForUser_0004.o StdioForUser_0005.o StdioForUser_0006.o StdioForUser_0007.o StdioForUser_0008.o StdioForUser_0009.o
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ SUSPEND_OBJS = sceSuspendForUser_0000.o sceSuspendForUser_0001.o sceSuspendForUs
|
|||||||
|
|
||||||
SYSMEM_OBJS = SysMemUserForUser_0000.o SysMemUserForUser_0001.o SysMemUserForUser_0002.o SysMemUserForUser_0003.o SysMemUserForUser_0004.o SysMemUserForUser_0005.o SysMemUserForUser_0006.o SysMemUserForUser_0007.o SysMemUserForUser_0008.o SysMemUserForUser_0009.o
|
SYSMEM_OBJS = SysMemUserForUser_0000.o SysMemUserForUser_0001.o SysMemUserForUser_0002.o SysMemUserForUser_0003.o SysMemUserForUser_0004.o SysMemUserForUser_0005.o SysMemUserForUser_0006.o SysMemUserForUser_0007.o SysMemUserForUser_0008.o SysMemUserForUser_0009.o
|
||||||
|
|
||||||
THREADMAN_OBJS = ThreadManForUser_0000.o ThreadManForUser_0001.o ThreadManForUser_0002.o ThreadManForUser_0003.o ThreadManForUser_0004.o ThreadManForUser_0005.o ThreadManForUser_0006.o ThreadManForUser_0007.o ThreadManForUser_0008.o ThreadManForUser_0009.o ThreadManForUser_0010.o ThreadManForUser_0011.o ThreadManForUser_0012.o ThreadManForUser_0013.o ThreadManForUser_0014.o ThreadManForUser_0015.o ThreadManForUser_0016.o ThreadManForUser_0017.o ThreadManForUser_0018.o ThreadManForUser_0019.o ThreadManForUser_0020.o ThreadManForUser_0021.o ThreadManForUser_0022.o ThreadManForUser_0023.o ThreadManForUser_0024.o ThreadManForUser_0025.o ThreadManForUser_0026.o ThreadManForUser_0027.o ThreadManForUser_0028.o ThreadManForUser_0029.o ThreadManForUser_0030.o ThreadManForUser_0031.o ThreadManForUser_0032.o ThreadManForUser_0033.o ThreadManForUser_0034.o ThreadManForUser_0035.o ThreadManForUser_0036.o ThreadManForUser_0037.o ThreadManForUser_0038.o ThreadManForUser_0039.o ThreadManForUser_0040.o ThreadManForUser_0041.o ThreadManForUser_0042.o ThreadManForUser_0043.o ThreadManForUser_0044.o ThreadManForUser_0045.o ThreadManForUser_0046.o ThreadManForUser_0047.o ThreadManForUser_0048.o ThreadManForUser_0049.o ThreadManForUser_0050.o ThreadManForUser_0051.o ThreadManForUser_0052.o ThreadManForUser_0053.o ThreadManForUser_0054.o ThreadManForUser_0055.o ThreadManForUser_0056.o ThreadManForUser_0057.o ThreadManForUser_0058.o ThreadManForUser_0059.o ThreadManForUser_0060.o ThreadManForUser_0061.o ThreadManForUser_0062.o ThreadManForUser_0063.o ThreadManForUser_0064.o ThreadManForUser_0065.o ThreadManForUser_0066.o ThreadManForUser_0067.o ThreadManForUser_0068.o ThreadManForUser_0069.o ThreadManForUser_0070.o ThreadManForUser_0071.o ThreadManForUser_0072.o ThreadManForUser_0073.o ThreadManForUser_0074.o ThreadManForUser_0075.o ThreadManForUser_0076.o ThreadManForUser_0077.o ThreadManForUser_0078.o ThreadManForUser_0079.o ThreadManForUser_0080.o ThreadManForUser_0081.o ThreadManForUser_0082.o ThreadManForUser_0083.o ThreadManForUser_0084.o ThreadManForUser_0085.o ThreadManForUser_0086.o ThreadManForUser_0087.o ThreadManForUser_0088.o ThreadManForUser_0089.o ThreadManForUser_0090.o ThreadManForUser_0091.o ThreadManForUser_0092.o ThreadManForUser_0093.o ThreadManForUser_0094.o ThreadManForUser_0095.o ThreadManForUser_0096.o ThreadManForUser_0097.o ThreadManForUser_0098.o ThreadManForUser_0099.o ThreadManForUser_0100.o ThreadManForUser_0101.o ThreadManForUser_0102.o ThreadManForUser_0103.o ThreadManForUser_0104.o ThreadManForUser_0105.o ThreadManForUser_0106.o ThreadManForUser_0107.o ThreadManForUser_0108.o ThreadManForUser_0109.o ThreadManForUser_0110.o ThreadManForUser_0111.o ThreadManForUser_0112.o ThreadManForUser_0113.o ThreadManForUser_0114.o ThreadManForUser_0115.o ThreadManForUser_0116.o ThreadManForUser_0117.o ThreadManForUser_0118.o ThreadManForUser_0119.o ThreadManForUser_0120.o ThreadManForUser_0121.o ThreadManForUser_0122.o ThreadManForUser_0123.o ThreadManForUser_0124.o ThreadManForUser_0125.o ThreadManForUser_0126.o
|
THREADMAN_OBJS = ThreadManForUser_0000.o ThreadManForUser_0001.o ThreadManForUser_0002.o ThreadManForUser_0003.o ThreadManForUser_0004.o ThreadManForUser_0005.o ThreadManForUser_0006.o ThreadManForUser_0007.o ThreadManForUser_0008.o ThreadManForUser_0009.o ThreadManForUser_0010.o ThreadManForUser_0011.o ThreadManForUser_0012.o ThreadManForUser_0013.o ThreadManForUser_0014.o ThreadManForUser_0015.o ThreadManForUser_0016.o ThreadManForUser_0017.o ThreadManForUser_0018.o ThreadManForUser_0019.o ThreadManForUser_0020.o ThreadManForUser_0021.o ThreadManForUser_0022.o ThreadManForUser_0023.o ThreadManForUser_0024.o ThreadManForUser_0025.o ThreadManForUser_0026.o ThreadManForUser_0027.o ThreadManForUser_0028.o ThreadManForUser_0029.o ThreadManForUser_0030.o ThreadManForUser_0031.o ThreadManForUser_0032.o ThreadManForUser_0033.o ThreadManForUser_0034.o ThreadManForUser_0035.o ThreadManForUser_0036.o ThreadManForUser_0037.o ThreadManForUser_0038.o ThreadManForUser_0039.o ThreadManForUser_0040.o ThreadManForUser_0041.o ThreadManForUser_0042.o ThreadManForUser_0043.o ThreadManForUser_0044.o ThreadManForUser_0045.o ThreadManForUser_0046.o ThreadManForUser_0047.o ThreadManForUser_0048.o ThreadManForUser_0049.o ThreadManForUser_0050.o ThreadManForUser_0051.o ThreadManForUser_0052.o ThreadManForUser_0053.o ThreadManForUser_0054.o ThreadManForUser_0055.o ThreadManForUser_0056.o ThreadManForUser_0057.o ThreadManForUser_0058.o ThreadManForUser_0059.o ThreadManForUser_0060.o ThreadManForUser_0061.o ThreadManForUser_0062.o ThreadManForUser_0063.o ThreadManForUser_0064.o ThreadManForUser_0065.o ThreadManForUser_0066.o ThreadManForUser_0067.o ThreadManForUser_0068.o ThreadManForUser_0069.o ThreadManForUser_0070.o ThreadManForUser_0071.o ThreadManForUser_0072.o ThreadManForUser_0073.o ThreadManForUser_0074.o ThreadManForUser_0075.o ThreadManForUser_0076.o ThreadManForUser_0077.o ThreadManForUser_0078.o ThreadManForUser_0079.o ThreadManForUser_0080.o ThreadManForUser_0081.o ThreadManForUser_0082.o ThreadManForUser_0083.o ThreadManForUser_0084.o ThreadManForUser_0085.o ThreadManForUser_0086.o ThreadManForUser_0087.o ThreadManForUser_0088.o ThreadManForUser_0089.o ThreadManForUser_0090.o ThreadManForUser_0091.o ThreadManForUser_0092.o ThreadManForUser_0093.o ThreadManForUser_0094.o ThreadManForUser_0095.o ThreadManForUser_0096.o ThreadManForUser_0097.o ThreadManForUser_0098.o ThreadManForUser_0099.o ThreadManForUser_0100.o ThreadManForUser_0101.o ThreadManForUser_0102.o ThreadManForUser_0103.o ThreadManForUser_0104.o ThreadManForUser_0105.o ThreadManForUser_0106.o ThreadManForUser_0107.o ThreadManForUser_0108.o ThreadManForUser_0109.o ThreadManForUser_0110.o ThreadManForUser_0111.o ThreadManForUser_0112.o ThreadManForUser_0113.o ThreadManForUser_0114.o ThreadManForUser_0115.o ThreadManForUser_0116.o ThreadManForUser_0117.o ThreadManForUser_0118.o ThreadManForUser_0119.o ThreadManForUser_0120.o ThreadManForUser_0121.o ThreadManForUser_0122.o ThreadManForUser_0123.o ThreadManForUser_0124.o ThreadManForUser_0125.o ThreadManForUser_0126.o ThreadManForUser_0127.o
|
||||||
|
|
||||||
UTILS_OBJS = UtilsForUser_0000.o UtilsForUser_0001.o UtilsForUser_0002.o UtilsForUser_0003.o UtilsForUser_0004.o UtilsForUser_0005.o UtilsForUser_0006.o UtilsForUser_0007.o UtilsForUser_0008.o UtilsForUser_0009.o UtilsForUser_0010.o UtilsForUser_0011.o UtilsForUser_0012.o UtilsForUser_0013.o UtilsForUser_0014.o UtilsForUser_0015.o UtilsForUser_0016.o UtilsForUser_0017.o UtilsForUser_0018.o UtilsForUser_0019.o UtilsForUser_0020.o UtilsForUser_0021.o UtilsForUser_0022.o UtilsForUser_0023.o UtilsForUser_0024.o UtilsForUser_0025.o UtilsForUser_0026.o
|
UTILS_OBJS = UtilsForUser_0000.o UtilsForUser_0001.o UtilsForUser_0002.o UtilsForUser_0003.o UtilsForUser_0004.o UtilsForUser_0005.o UtilsForUser_0006.o UtilsForUser_0007.o UtilsForUser_0008.o UtilsForUser_0009.o UtilsForUser_0010.o UtilsForUser_0011.o UtilsForUser_0012.o UtilsForUser_0013.o UtilsForUser_0014.o UtilsForUser_0015.o UtilsForUser_0016.o UtilsForUser_0017.o UtilsForUser_0018.o UtilsForUser_0019.o UtilsForUser_0020.o UtilsForUser_0021.o UtilsForUser_0022.o UtilsForUser_0023.o UtilsForUser_0024.o UtilsForUser_0025.o UtilsForUser_0026.o
|
||||||
|
|
||||||
|
@@ -38,3 +38,6 @@
|
|||||||
#ifdef F_ModuleMgrForUser_0011
|
#ifdef F_ModuleMgrForUser_0011
|
||||||
IMPORT_FUNC "ModuleMgrForUser", 0x644395E2,sceKernelGetModuleIdList
|
IMPORT_FUNC "ModuleMgrForUser", 0x644395E2,sceKernelGetModuleIdList
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef F_ModuleMgrForUser_0012
|
||||||
|
IMPORT_FUNC "ModuleMgrForUser",0xD8B73127,sceKernelGetModuleIdByAddress
|
||||||
|
#endif
|
||||||
|
@@ -383,3 +383,6 @@
|
|||||||
#ifdef F_ThreadManForUser_0126
|
#ifdef F_ThreadManForUser_0126
|
||||||
IMPORT_FUNC "ThreadManForUser",0x8218B4DD,sceKernelReferGlobalProfiler
|
IMPORT_FUNC "ThreadManForUser",0x8218B4DD,sceKernelReferGlobalProfiler
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef F_ThreadManForUser_0127
|
||||||
|
IMPORT_FUNC "ThreadManForUser",0x60107536,sceKernelDeleteLwMutex
|
||||||
|
#endif
|
||||||
|
@@ -208,6 +208,15 @@ int sceKernelQueryModuleInfo(SceUID modid, SceKernelModuleInfo *info);
|
|||||||
*/
|
*/
|
||||||
int sceKernelGetModuleIdList(SceUID *readbuf, int readbufsize, int *idcount);
|
int sceKernelGetModuleIdList(SceUID *readbuf, int readbufsize, int *idcount);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the ID of the module occupying the address
|
||||||
|
*
|
||||||
|
* @param moduleAddr - A pointer to the module
|
||||||
|
*
|
||||||
|
* @return >= 0 on success, otherwise one of ::PspKernelErrorCodes
|
||||||
|
*/
|
||||||
|
int sceKernelGetModuleIdByAddress(const void *moduleAddr);
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -589,6 +589,30 @@ int sceKernelPollSema(SceUID semaid, int signal);
|
|||||||
*/
|
*/
|
||||||
int sceKernelReferSemaStatus(SceUID semaid, SceKernelSemaInfo *info);
|
int sceKernelReferSemaStatus(SceUID semaid, SceKernelSemaInfo *info);
|
||||||
|
|
||||||
|
/** Struct as workarea for lightweight mutex */
|
||||||
|
typedef struct {
|
||||||
|
/** Count */
|
||||||
|
int lockLevel;
|
||||||
|
/** Locking thread */
|
||||||
|
SceUID lockThread;
|
||||||
|
/** Attribute */
|
||||||
|
int attr;
|
||||||
|
/** Number of waiting threads */
|
||||||
|
int numWaitThreads;
|
||||||
|
/** UID */
|
||||||
|
SceUID uid;
|
||||||
|
/** Padding */
|
||||||
|
int pad[3];
|
||||||
|
} SceLwMutexWorkarea;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a lightweight mutex
|
||||||
|
*
|
||||||
|
* @param workarea - The pointer to the workarea
|
||||||
|
*
|
||||||
|
* @return 0 on success, otherwise one of ::PspKernelErrorCodes
|
||||||
|
*/
|
||||||
|
int sceKernelDeleteLwMutex(SceLwMutexWorkarea *workarea);
|
||||||
|
|
||||||
/* Event flags. */
|
/* Event flags. */
|
||||||
|
|
||||||
|
@@ -52,6 +52,8 @@ extern "C" {
|
|||||||
/* IrDA */
|
/* IrDA */
|
||||||
#define PSP_MODULE_IRDA 0x0600
|
#define PSP_MODULE_IRDA 0x0600
|
||||||
|
|
||||||
|
/** An error code used as a return value */
|
||||||
|
#define SCE_ERROR_MODULE_ALREADY_LOADED (0x80111102)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a module (PRX) from user mode.
|
* Load a module (PRX) from user mode.
|
||||||
|
@@ -24,6 +24,9 @@ extern "C" {
|
|||||||
#define PSP_NET_MODULE_PARSEHTTP 5
|
#define PSP_NET_MODULE_PARSEHTTP 5
|
||||||
#define PSP_NET_MODULE_HTTP 6
|
#define PSP_NET_MODULE_HTTP 6
|
||||||
#define PSP_NET_MODULE_SSL 7
|
#define PSP_NET_MODULE_SSL 7
|
||||||
|
|
||||||
|
/** An error code used as a return value */
|
||||||
|
#define SCE_ERROR_NET_MODULE_NOT_LOADED (0x80110803)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a network module (PRX) from user mode.
|
* Load a network module (PRX) from user mode.
|
||||||
|
Reference in New Issue
Block a user