📄 readme
字号:
./manual gives users a text-based interactive interface to local or
remote tokens. This is extremely useful for manually testing the
token server and setting up deadlock scenarios.
Run it as follows
% ./manual -u
./manual:
[-h <remote host>]
[-p <remote port>]
[-i ignore deadlock]
[-d debug]
./manual gives you the following prompt.
<tid> <token> <type> <operation>
<tid> This is the client id of the current operation. This is set
manually by ./manual for every operation. Be careful when
using multiple <tid>'s during a remote session (see BUGS
below).
<token> This is the name of the token for the operation.
<type> This is the type of the token. This can be:
M - Corresponds to a Mutex lock.
R - Corresponds to Readers/Writer lock.
W - Corresponds to Readers/Writer lock.
Obviously, a single <token> can be M or it can R and/or W. If
you perform and operation like this "tid1 tokenA M A" then
don't do this "tid1 tokenA R A". This doesn't make sense.
<operation> This is the operation to perform on the
<tid>-<token>-<type> proxy. These include:
A - acquire.
N - renew.
R - release.
T - tryacquire.
BUGS!!!!
When performing remote tests, be careful when using a single running
./manual to impersonate two <tid>'s. The Token Server client
connection policy is currently, one per thread. The Token Server
assumes that the same <tid> is always on the other end of a
connection. If you do something like the following, you will break
it:
lambada:Tokens/manual> ./manual -h tango -p 20202
<tid> <token> <type> <operation>
tid1 tokenA M A
ACE_TSS_Connection new connection
(1) acquired tokenA remotely.
Succeeded.
<tid> <token> <type> <operation>
tid2 tokenA M A
(1) acquired tokenA remotely. <------ This is remote BADness!!!
Succeeded.
Violated invariant. <------ Locally detected badness.
<tid> <token> <type> <operation>
Notice that the local side discovered that this was incorrect.
However, the Token Server thinks it was a recursive acquisition for
tid1. Keep in mind that this is not a problem with the Token library.
It is just a problem with how this primitive ./manual application maps
STDIN to the ACE Token API.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -