#define BEGINMAC do {
#define ENDMAC } while (0)
-#if defined(AFS_SUN57_ENV)
-#define MyPidxx (curthread->t_did)
-#else
-#if defined(AFS_OBSD_ENV) || defined(AFS_SUN5_ENV)
+#if defined(AFS_SUN57_ENV)
+typedef kthread_t * afs_lock_tracker_t;
+#define MyPidxx (curthread)
+#define MyPidxx2Pid(x) (ttoproc(x)->p_pid)
+#elif defined(AFS_SUN5_ENV) || defined(AFS_OBSD_ENV)
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx (curproc->p_pid)
+#define MyPidxx2Pid(x) (x)
#else
#if defined(AFS_AIX41_ENV)
+typedef tid_t afs_lock_tracker_t;
extern tid_t thread_self();
-#define MyPidxx thread_self()
+#define MyPidxx (thread_self())
+#define MyPidxx2Pid(x) ((afs_int32)(x))
#else /* AFS_AIX41_ENV */
#if defined(AFS_HPUX101_ENV)
-#define MyPidxx ((int)p_pid(u.u_procp))
+typedef struct proc * afs_lock_tracker_t;
+#define MyPidxx (u.u_procp)
+#define MyPidxx2Pid(x) ((afs_int32)p_pid(x))
#else
#if defined(AFS_SGI64_ENV)
#if defined(AFS_SGI65_ENV)
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx proc_pid(curproc())
+#define MyPidxx2Pid(x) (x)
#else
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx current_pid()
+#define MyPidxx2Pid(x) (x)
#endif
#else /* AFS_SGI64_ENV */
#ifdef AFS_LINUX20_ENV
-#define MyPidxx current->pid
+typedef struct task_struct * afs_lock_tracker_t;
+#define MyPidxx (current)
+#define MyPidxx2Pid(x) ((x)->pid)
#else
#if defined(AFS_DARWIN_ENV)
#if defined(AFS_DARWIN80_ENV)
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx (proc_selfpid())
+#define MyPidxx2Pid(x) (x)
#else
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx (current_proc()->p_pid )
+#define MyPidxx2Pid(x) (x)
#endif
#else
#if defined(AFS_FBSD_ENV)
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx (curproc->p_pid )
+#define MyPidxx2Pid(x) (x)
#else
+typedef unsigned int afs_lock_tracker_t;
#define MyPidxx (u.u_procp->p_pid )
+#define MyPidxx2Pid(x) (x)
#endif /* AFS_FBSD_ENV */
#endif /* AFS_DARWIN_ENV */
#endif /* AFS_LINUX20_ENV */
#endif /* AFS_HPUX101_ENV */
#endif /* AFS_AIX41_ENV */
#endif
-#endif
/* all locks wait on excl_locked except for READ_LOCK, which waits on readers_reading */
struct afs_lock {
** only for writes/shared locks. Hence, it indictes where in the
** source code the shared/write lock was set.
*/
- unsigned int pid_last_reader; /* proceess id of last reader */
- unsigned int pid_writer; /* process id of writer, else 0 */
+ afs_lock_tracker_t pid_last_reader; /* proceess id of last reader */
+ afs_lock_tracker_t pid_writer; /* process id of writer, else 0 */
unsigned int src_indicator; /* third param to ObtainLock() */
#endif /* INSTRUMENT_LOCKS */
};