if pgproc is used to represent a process and proclock represents a process and its locks of interest, then why does pgproc contain the following information about locks?
/*
* XLOG location of first XLOG record written by this backend's
* current transaction. If backend is not in a transaction or hasn't
* yet modified anything, logRec.xrecoff is zero.
*/
XLogRecPtr logRec;
/* Info about LWLock the process is currently waiting for, if any. */bool lwWaiting; /* true if waiting for an LW lock */bool lwExclusive; /* true if waiting for exclusive access */struct PGPROC *lwWaitLink; /* next waiter for same LW lock *//* Info about lock the process is currently waiting for, if any. *//* waitLock and waitHolder are NULL if not currently waiting. */