1461100011-ae91c83d-4025-4822-8e24-99ce5779b1b3

1. A computer-implemented method for automatically transforming a locking primitive for a shared data object to permit multiple synchronized threads of a program to simultaneously hold read-only locks on the shared data object, comprising:
performing a field access analysis on a lock word of the locking primitive for the shared data object in a header of the shared data object to determine whether a predetermined set of conditions are met, wherein the predetermined set of conditions indicate the shared data object is available to be locked by multiple read-only threads;
when the set of predetermined conditions are met, automatically transforming the locking primitive for the shared data object by setting a thread identifier field of the lock word to a predetermined value, the predetermined value not being a thread identifier and indicating that additional threads are allowed to simultaneously hold a read-only lock on the shared data object; and
incrementing a thread count in a thread count field of the lock work for each read-only lock simultaneously obtained on the shared data object, wherein a read-write lock on the shared data object is not permitted while a read-only lock exists.
2. The computer-implemented method of claim 1,
further comprising setting a fat lock contention (FLC) bit in an FLC field of the lock word pursuant to an attempt by a thread to establish the read-write lock on the shared data object subsequent to setting the thread identifier to the preselected value and incrementing the thread count.
3. The computer-implemented method of claim 1, wherein the method is carried out at compile time of program code associated with the shared data object.
4. The computer-implemented method of claim 1, wherein the predetermined set of conditions includes a lack of a write command to global data objects or global variables in a synchronized region of program code associated with locking the shared data object.
5. The computer-implemented method of claim 1, wherein the predetermined set of conditions includes a lack of nested locks in a synchronized region of program code associated with locking the shared data object.
6. The computer-implemented method of claim 1, wherein the predetermined set of conditions includes a read-only restriction for a synchronized region of program code associated with locking the shared data object.
7. A computer-implemented method for establishing multiple read-only locks on a shared data object by multiple synchronized threads of a program, comprising:
providing a lock word for the shared data object in an object header of the shared data object that includes a thread identifier field, a thread count field, flat lock contention field and a lock inflation field;
examining the thread identifier field to determine if a read-write lock currently exists on the shared data object pursuant to an attempt by a first thread to obtain a read-only lock on the shared data object, wherein the thread identifier field will contain a value indicating there is a read-write lock on the shared data object when a read-write lock currently exists on the shared data object;
incrementing a thread count in the thread count field to establish a first read-only lock on the shared data object by the first thread if the read-write lock has not been established, and wherein a read-write lock on the shared data object is not permitted while a read-only lock exists; and
setting a thread identifier in the thread identifier field to a predetermined value indicative of read-only locks by a thread establishing the read-only lock, the predetermined value not being a thread identifier, wherein the presence of the predetermined value in the thread identifier field indicates additional threads can simultaneously establish read-only locks on the shared data object.
8. The computer-implemented method of claim 7, further comprising:
examining the thread identifier field to determine if the read-write lock currently exists on the shared data object pursuant to an attempt by a second thread to simultaneously obtain a second read-only lock on the shared data object; and
incrementing the thread count to simultaneously establish the second read-only lock if the read-write lock has not been established.
9. The computer-implemented method of claim 7, further comprising examining the thread identifier field to determine if the read-only lock currently exists on the shared data object, as indicated by the presence of the predetermined value in the thread identifier field, pursuant to an attempt by a second thread to simultaneously obtain a second read-only lock on the shared data object; and
incrementing the thread count to simultaneously establish the second read-only lock upon detecting the presence of the predetermined value in the thread identifier field.
10. The computer-implemented method of claim 7, wherein the predetermined value comprises zero.
11. The computer-implemented method of claim 7, further comprising setting a fat lock contention (FLC) bit in an FLC field of the lock word pursuant to an attempt by a third thread to establish the read-write lock on the shared data object.
12. The computer-implemented method of claim 7, further comprising:
decrementing the thread count pursuant to a release of the second read-only lock by the second thread; and
decrementing the thread count pursuant to a release of the first read-only lock by the first thread.
13. A computerized system implemented in hardware, the hardware programmed to execute instruction code for establishing multiple read-only locks by synchronized threads of a program on a shared data object, comprising:
an analysis system established by the computerized system for examining a thread identifier in a thread identifier field of a lock word associated with the shared data object in a header of the shared data object to determine if a read-write lock currently exists on the shared data object pursuant to an attempt by a first thread to obtain a read-only lock on the shared data object, wherein the thread identifier field will contain a value indicating there is a read-write lock on the shared data object when a read-write lock currently exists on the shared data object;
a count system established by the computerized system for incrementing a thread count in a thread count field of the lock word to establish a first read-only lock on the shared data object by the first thread if the read-write lock has not been established, wherein a read-write lock on the shared data object is not permitted while a read-only lock exists; and
a thread identifier system established by the computerized system for setting a thread identifier in the thread identifier field to a predetermined value indicative of read-only locks, the predetermined value not being a thread identifier, wherein the presence of the predetermined value in the thread identifier field indicates additional threads can simultaneously establish read-only locks on the shared data object.
14. The computerized system of claim 13, wherein the analysis system further examines the thread identifier field to check for the predetermined value pursuant to an attempt by a second thread to simultaneously obtain a second read-only lock on the shared data object, and wherein the count system further increments the thread count to simultaneously establish the second read-only lock if the predetermined value is present.
15. The computerized system of claim 13, wherein the predetermined value comprises zero.
16. The computerized system of claim 13, further comprising an inflation system for setting an inflation bit in an inflation field of the lock word pursuant to an attempt by a third thread to establish the read-write lock on the shared data object.
17. The computerized system of claim 13, wherein the count system further decrements the thread count for each release of the second read-only lock and the first read-only lock.
18. A computer program product stored on a recordable medium for establishing multiple read-only locks by synchronized threads of a program on a shared data object, which when executed, comprises:
program code for examining a thread identifier in a thread identifier field of a lock word associated with the shared data object in a header of the shared data object to determine if a read-write lock currently exists on the shared data object pursuant to an attempt by a first thread to obtain a read-only lock on the shared data object, wherein the thread identifier field will contain a value indicating there is a read-write lock on the shared data object when a read-write lock currently exists on the shared data object;
program code for incrementing a thread count in a thread count field of the lock word to establish a first read-only lock on the shared data object by the first thread if the read-write lock has not been established, wherein a read-write lock on the shared data object is not permitted while a read-only lock exists; and
program code for setting a thread identifier in the thread identifier field to a predetermined value indicative of read-only locks, the predetermined value not being a thread identifier, wherein the presence of the predetermined value in the thread identifier field indicates additional threads can simultaneously establish read-only locks on the shared data object.
19. The program product of claim 18, wherein the program code for examining further examines the thread identifier field to check for the predetermined value pursuant to an attempt by a second thread to simultaneously obtain a second read-only lock on the shared data object, and wherein the program code for incrementing further increments the thread count to simultaneously establish the second read-only lock if the predetermined value is present.
20. The program product of claim 18, wherein the predetermined value comprises zero.
21. The program product of claim 18, further comprising program code for setting an inflation bit in an inflation field of the lock word pursuant to an attempt by a third thread to establish the read-write lock on the shared data object.
22. The program product of claim 20, further comprising program code for decrementing the thread count for each release of the second read-only lock and the first read-only lock.
23. A method for deploying an application for establishing multiple read-only locks by synchronized threads of a program on a shared data object, comprising:
providing a computer infrastructure being operable to:
examine a thread identifier in a thread identifier field of a lock word associated with the shared data object in a header of the shared data object to determine if a read-write lock currently exists on the shared data object pursuant to an attempt by a first thread to obtain a read-only lock on the shared data object, wherein the thread identifier field will contain a value indicating there is a read-write lock on the shared data object when a read-write lock currently exists on the shared data object;
increment a thread count in a thread count field of the lock word to establish a first read-only lock on the shared data object by the first thread if the read-write lock has not been established, wherein a read-write lock on the shared data object is not permitted while a read-only lock exists; and

set a thread identifier in the thread identifier field to a predetermined value indicative of read-only locks, the predetermined value not being a thread identifier, wherein the presence of the predetermined value in the thread identifier field indicates additional threads can simultaneously establish read-only locks on the shared data object.
24. The method of claim 23, wherein the computer infrastructure is further operable to examine the thread identifier field to check for the predetermined value pursuant to an attempt by a second thread to simultaneously obtain a second read-only lock on the shared data object, and further increment the thread count to simultaneously establish the second read-only lock if the predetermined value is present.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1-62. (canceled)
63. A method comprising:
detecting, by a computing device comprising an input device and a display, during interaction with a software application executing on the computing device, a jiggle motion of the input device detectable by detection software operating on the computing device;
analyzing, by the computing device, the jiggle motion of the input device to determine if the motion of the input device meets predetermined motion criteria;
initiating, by the computing device, if the predetermined motion criteria are met, a software operation associated with the jiggle motion; and
not initiating the software operation if the predetermined motion criteria are not met.
64. The method according to claim 63, wherein the detection software is in communication with the software application.
65. The method according to claim 63, wherein the software application comprises the detection software.
66. The method according to claim 63, wherein the software operation associated with the jiggle motion occurs within the software application.
67. The method according to claim 63, wherein the software operation associated with the jiggle motion is performed within a second software application.
68. The method according to claim 67, wherein the second software application is in communication with the detection software.
69. The method according to claim 63, wherein said software operation is a search function.
70. The method according to claim 63, wherein said software operation is a save function.
71. A method according to claim 70, wherein the save function is effective to save a document from a word-processing application to a preselected location.
72. A non-transitory computer readable storage medium comprising executable instructions tangibly stored thereon for performing a method, the method including the steps of:
detecting, by a computing device comprising an input device and a display, during interaction with a software application executing on the computing device, a jiggle motion of the input device detectable by detection software operating on the computing device;
analyzing, by the computing device, the jiggle motion of the input device to determine if the motion of the input device meets predetermined motion criteria;
initiating, by the computing device, if the predetermined motion criteria are met, a software operation associated with the jiggle motion; and
not initiating the software operation if the predetermined motion criteria are not met.
73. The non-transitory computer readable storage medium according to claim 72, wherein the detection software is in communication with the software application.
74. The non-transitory computer readable storage medium according to claim 72, wherein the software application comprises the detection software.
75. The non-transitory computer readable storage medium according to claim 72, wherein the software operation associated with the jiggle motion occurs within the software application.
76. The non-transitory computer readable storage medium according to claim 72, wherein the software operation associated with the jiggle motion is performed within a second software application.
77. The non-transitory computer readable storage medium according to claim 76, wherein the second software application is in communication with the detection software.
78. The non-transitory computer readable storage medium according to claim 72, wherein said software operation is a search function.
79. The non-transitory computer readable storage medium according to claim 72, wherein said software operation is a save function.
80. The non-transitory computer readable storage medium according to claim 79, wherein the save function is effective to save a document from a word-processing application to a preselected location.
81. A computing device comprising an input device and a display, the computing device comprising:
a data storage; and
a processor for executing instructions stored on the data storage, the instructions comprising:
detecting, by a computing device comprising an input device and a display, during interaction with a software application executing on the computing device, a jiggle motion of the input device detectable by detection software operating on the computing device;
analyzing, by the computing device, the jiggle motion of the input device to determine if the motion of the input device meets predetermined motion criteria;
initiating, by the computing device, if the predetermined motion criteria are met, a software operation associated with the jiggle motion; and
not initiating the software operation if the predetermined motion criteria are not met.
82. The computing device according to claim 81, wherein the detection software is in communication with the software application.

1461100000-f2143d76-2925-4ecd-8578-7a5da1bfde5f

1. A broadcast encryption method, comprising the steps of:
allocating, to each of a plurality of subscribers, a corresponding set of subscriber keys;
broadcasting encrypted content to the plurality of subscribers using a set of broadcast keys, wherein the encrypted content is decoded by a given subscriber using the subscriber’s corresponding set of subscriber keys;
modifying the set of broadcast keys, which are used for broadcasting encrypted content, by excluding compromised subscriber keys; and
updating a set of subscriber keys corresponding to at least one subscriber when the at least one subscriber’s set of subscriber keys comprises an amount of active keys that falls below a first predetermined threshold.
2. The method of claim 1, wherein each set of subscriber keys is encoded on a smartcard that is issued to the corresponding subscriber.
3. The method of claim 2, further comprising the steps of:
identifying a compromised smartcard; and
identifying each subscriber key contained on the compromised smartcard as a compromised key.
4. The method of claim 3, wherein a compromised smartcard comprises one of a pirate smartcard and a smartcard of an excluded subscriber.
5. The method of claim 4, wherein the step of updating comprises the steps of:
tracking a total amount of compromised cards; and
reissuing a smartcard comprising the updated set of subscriber keys when the total amount of compromised cards meets a second predefined threshold.
6. The method of claim 1, wherein the first predetermined threshold is one key.
7. A broadcast encryption method, comprising the steps of:
allocating a set of subscriber keys to each of a plurality of n subscribers, wherein each set of subscriber keys is generated by randomly selecting r keys from a universal set comprising K keys;
broadcasting encrypted content to the n subscribers using a set of broadcast keys Sp selected from the universal set of keys;
identifying at least one compromised subscriber key;
adjusting Sp by excluding the at least one compromised subscriber key; and
updating a set of subscriber keys corresponding to at least one subscriber when the at least one subscriber’s set of subscriber keys comprises an amount of active keys that falls below a first predetermined threshold.
8. The method of claim 7, wherein the step of allocating is performed using a randomized broadcast encryption scheme wherein K is selected to ensure an (m,\u03b1) cover free family with high probability that the sets of subscriber keys corresponding to a coalition of m subscribers can not cover a fraction \u03b1 of r keys comprising the set of subscriber keys of another subscriber.
9. The method of claim 8, wherein the step of broadcasting is performed using an (\u03b1r, |Sp|)-threshold broadcast protocol.
10. The method of claim 9, wherein \u03b1r=1.
11. The method of claim 7, wherein each set of subscriber keys is encoded on a separate smartcard that is issued to the corresponding subscriber.
12. The method of claim 11, wherein the step of identifying at least one compromised subscriber key comprises the steps of:
identifying a compromised smartcard; and
identifying each subscriber key contained on the compromised card as a compromised key.
13. The method of claim 12, wherein a compromised smartcard comprises one of a pirate smartcard and a smartcard of an excluded subscriber.
14. The method of claim 12, wherein the step of updating comprises the steps of:
tracking a total amount of compromised smartcards; and
reissuing a smartcard comprising the updated set of subscriber keys when the total amount of compromised cards meets a second predefined threshold d.
15. The method of claim 14, wherein d is substantially equal to Kr.
16. The method of claim 14, wherein the step of reissuing comprises the steps of:
generating a new key for each compromised key to update the universal set of keys; and
randomly selecting r keys from the updated universal set of keys to generate the updated set of subscriber keys.
17. The method of claim 14, wherein K, r and d are selected to obtain a bound on the number of subscribers that are reissued smartcards in recarding sessions.
18. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for performing broadcast encryption, the method steps comprising:
allocating, to each of a plurality of subscribers, a corresponding set of subscriber keys;
broadcasting encrypted content to the plurality of subscribers using a set of broadcast keys, wherein the encrypted content is decoded by a given subscriber using the subscriber’s corresponding set of subscriber keys;
modifying the set of broadcast keys, which are used for broadcasting encrypted content, by excluding compromised subscriber keys; and
updating a set of subscriber keys corresponding to at least one subscriber when the at least one subscriber’s set of subscriber keys comprises an amount of active keys that falls below a first predetermined threshold.
19. The program storage device of claim 18, further comprising instructions for performing the step of:
identifying each subscriber key contained on a compromised smartcard as a compromised key.
20. The program storage device of claim 19, wherein the instructions for performing the step of updating comprise instructions for performing the steps of:
tracking a total amount of compromised cards; and
encoding a smartcard with the updated set of subscriber keys when the total amount of compromised cards meets a second predefined threshold.
21. The program storage device of claim 18, wherein the first predetermined threshold comprises one key.
22. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for broadcast encryption, the method comprising the steps of:
allocating a set of subscriber keys to each of a plurality of n subscribers, wherein each set of subscriber keys is generated by randomly selecting r keys from a universal set comprising K keys;
broadcasting encrypted content to the n subscribers using a set of broadcast keys Sp selected from the universal set of keys;
identifying at least one compromised subscriber key;
adjusting Sp by excluding the at least one compromised subscriber key; and
updating a set of subscriber keys corresponding to at least one subscriber when the at least one subscriber’s set of subscriber keys comprises an amount of active keys that falls below a first predetermined threshold.
23. The program storage device of claim 22, wherein the instructions for performing the step of allocating comprise instructions for performing a randomized broadcast encryption scheme wherein K is selected to ensure an (m, \u03b1) cover free family with high probability that the sets of subscriber keys corresponding to a coalition of m subscribers can not cover a fraction \u03b1 of r keys comprising the set of subscriber keys of another subscriber.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A repetitive control device comprising:
an adder to which a compensated signal is inputted;
a feedback signal system for sequentially updating and storing an output signal from the adder, and outputting the signal to the adder;
said feedback signal system comprising,
a filter which has, as a delay element, a memory which stores signal information for one rotation of a disc into divided plural memory areas of the memory,
a gain element which multiplies an output from the filter by a value not larger than 1, and inputs the resultant to the adder, and
said filter being operated using a clock signal that is equal to an operation frequency of a driving signal, or a divided frequency thereof.
2. A repetitive control device as defined in claim 1 wherein
said filter has a register connected in parallel with the memory, and records higher-order bit data of an input signal in the memory while records lower-order bit data in the register, during a filtering process by the filter.
3. A repetitive control device as defined in claim 2 wherein
a word length of the higher-order bit data recorded in the memory is equal to a word length of data of the compensated signal that is added in the adder, or a word length of a DA converter to which the output of the adder is inputted.
4. A repetitive control device as defined in claim 1 wherein
said filter includes a low-pass filter, and uses said memory as a delay element for the low-pass filter.
5. A repetitive control device as defined in claim 1 wherein
said filter is a band-pass filter comprising a low-pass filter and a high-pass filter, and uses said memory as a delay element for the low-pass filter.
6. A repetitive control device including an integral term operation part of a PID servo filter, which performs an arithmetic processing using a clock signal that is equal to an operation frequency of a driving signal, or a divided frequency thereof, said integral term operation part comprising:
an adder to which a servo error signal is inputted; and
a feedback signal system for sequentially updating an output signal from the adder and inputting the signal to the adder; and
said feedback signal system comprising,
a memory in which signal information for one rotation of a disc is divided to be stored in plural memory areas, and
a gain element which multiplies an output from the memory by a value not larger than 1, and inputs the resultant to the adder,
wherein, when performing an integral operation to the inputted servo error signal, the integral operation uses the memory as a delay element for the input signal.
7. An optical disc device performing recording or playback of an optical disc, which is equipped with a repetitive control device as defined in claim 1.
8. An optical disc device performing recording or playback of an optical disc, which is equipped with a repetitive control device as defined in claim 6.