[comp.sys.sgi] locks

williams@sp14.csrd.uiuc.edu (Peter Lawrence Williams) (10/09/90)

I need a lot of locks for a program I'm developing, and plan on using
multiplexed locks.  The following are some questions which I couldn`t 
find answers to in the man pages or ulock.h.

I'd like to know how to determine whether a particular SGI machine has
soft or hard locks.  Also how much memory in the shared area is required 
per soft lock.  u_locks.h say there can be a maximum of 4096 hard locks
per share group, so I'm going to create exactly 4096 locks and assume
that my code should then be portable across machines regardless of whether
they have soft or hard lock capability.  I am assuming that 4096 soft locks 
will fit in the default 64K shared area.

Any pointers to example code using u_locks.h?

Thank you,
Peter Williams
williams@csrd.uiuc.edu

jwag@moose.asd.sgi.com (Chris Wagner) (10/10/90)

In article <1990Oct9.151517.18350@csrd.uiuc.edu>,
williams@sp14.csrd.uiuc.edu (Peter Lawrence Williams) writes:
> 
> I need a lot of locks for a program I'm developing, and plan on using
> multiplexed locks.  The following are some questions which I couldn`t 
> find answers to in the man pages or ulock.h.
> 
> I'd like to know how to determine whether a particular SGI machine has
> soft or hard locks.  Also how much memory in the shared area is required 
> per soft lock.  u_locks.h say there can be a maximum of 4096 hard locks
> per share group, so I'm going to create exactly 4096 locks and assume
> that my code should then be portable across machines regardless of whether
> they have soft or hard lock capability.  I am assuming that 4096 soft locks 
> will fit in the default 64K shared area.
> 
> Any pointers to example code using u_locks.h?
> 
> Thank you,
> Peter Williams
> williams@csrd.uiuc.edu

To determine whether a machine has hard/soft locks there are 2 easy ways:
	1) look for the device /dev/hl
	2) if you have a multi-processor then you got hardware locks


the 4096 number is somewhat arbitrary - you won't actually get that many -
the usinit logic uses a few.  There was also a bug in 3.2 that prevented one
from getting more than about 1024 hardware locks.

4096 locks will NOT fit in 64k to my knowledge - try bumping it up to
256K (more if you rutn on debugging/metering)

Chris Wagner