Prosecution Insights
Last updated: October 01, 2026
Application No. 17/548,433

APPLICATION PROGRAMMING INTERFACES FOR INTEROPERABILITY

Non-Final OA §103
Filed
Dec 10, 2021
Examiner
TRUONG, LECHI
Art Unit
2194
Tech Center
2100 — Computer Architecture & Software
Assignee
NVIDIA Corporation
OA Round
5 (Non-Final)
87%
Grant Probability
Favorable
5-6
OA Rounds
0m
Est. Remaining
99%
With Interview

Examiner Intelligence

Grants 87% — above average
87%
Career Allowance Rate
776 granted / 889 resolved
+32.3% vs TC avg
Strong +36% interview lift
Without
With
+36.4%
Interview Lift
resolved cases with interview
Typical timeline
3y 0m
Avg Prosecution
26 currently pending
Career history
921
Total Applications
across all art units

Statute-Specific Performance

§101
18.1%
-21.9% vs TC avg
§103
63.8%
+23.8% vs TC avg
§102
4.1%
-35.9% vs TC avg
§112
8.1%
-31.9% vs TC avg
Black line = Tech Center average estimate • Based on career data from 889 resolved cases

Office Action

§103
DETAILED ACTION Notice of Pre-AIA or AIA Status The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Continued Examination Under 37 CFR 1.114 A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 01/06/2026 has been entered. Claims 1-27 are presented for the examination. Claim Rejections - 35 USC § 103 The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claims 1, 8, 15, 22 are rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) and further in view of in view of Kouznetsov( US 7254811 B2). As to claim 1, Arakji teaches one or more circuits circuitry to perform an application programming interface (API) to cause a data structure to comprise one or more parameters of a timeline semaphore based, at least in part, on an address of the timeline semaphore( The interface controller 202 interfaces the ordering processor circuitry , col 9, ln 52-55/ Note that in the case of a 0.5 KB buffer, and assuming 4 byte addresses,128 semaphores concurrently released from interrupt handlers is supported. Such a circumstance is not likely, and a buffer of half the size (only 256 bytes) supports 64 such concurrently released semaphores, para[0021], ln 1-6/ To understand the consequences of such an interruption, consider, for example, the case where two interrupt handles A (high priority) and B (low priority) are nested. Specifically, interrupt handler B executes first, and in the system call[API] to release the semaphore, the copying of the semaphore reference to the buffer occurs as such: 1. The head of the circular buffer is read from memory. 2. The semaphore reference is stored at the location of the head. 3. The head of the circular buffer is incremented. If after step 2 executes, the interrupt handler B is interrupted by interrupt handler A, then interrupt handler A will copy its semaphore reference to the circular buffer by first reading the head variable, then storing its semaphore reference at the head location. The head variable read by interrupt handler A is the same one that was used by interrupt handler B, since interrupt handler B did not yet increment it. Thus when interrupt handler A stores its semaphore reference at the head location, it will effectively overwrite interrupt handler B's semaphore reference, para[0022] to para[0015]/ a reference to a simple structure that contains both the reference to the semaphore and to the task is stored in that buffer instead (this is allocated on the heap by the blocking task and freed by the software interrupt). Para[0029], ln 17-22). Nankaku teaches in response an application programming interface (API) call, cause a data structure to comprise one or more parameters of a timeline semaphore based, at least in part, on an address of the timeline semaphore received from another API, the timeline semaphore having been generated by the other API( Using the semaphore handle, the task[API] issues a system call to the multi-tasking operating system, and uses the resource, para[0008], ln 13-20/ a semaphore handle identifying the semaphore controlling the resource, para[0014] , ln 17-2-/ Further, in the conventional technology, first the task has to acquire the semaphore handle associated with the symbol, and then acquire the semaphore using the semaphore handle. That is, the task needs to issue two commands, namely, "Acquire semaphore handle" and "Acquire semaphore", thus increasing the number of steps, para[0011]/ assigns a handle to each semaphore (hereinafter, "semaphore handle"), para[0026], ln 12-16/ searches an identifier management table containing resource symbols and identifiers (semaphore handles) in a correlated form, para[0008], ln 4-8/ The semaphore structures 6 are arranged in a predetermined sequence (as a semaphore structure array), para[0025], ln 3-9/ in FIG. 2 as well as with reference to FIG. 1. The task 5[API] outputs (issues) to the semaphore operating unit 8[API], an "Acquire semaphore" command including in the command, the symbol of the resource 7 to be used (step S100). Upon receiving the Acquire semaphore command, the association table managing unit 81 of the semaphore operating unit 8 retrieves from the symbol-handle association table 4, the semaphore handle corresponding to the symbol included in the Acquire semaphore command (step S101). If the symbol-handle association table 4 contains the semaphore handle corresponding to the symbol included in the Acquire semaphore command ("Yes" at step S102), the association table managing unit 81 sends an Acquired semaphore notification to the semaphore acquisition processing unit 83, including the retrieved semaphore handle therein. Upon receiving the Acquired semaphore notification, the semaphore acquisition processing unit 83 implements the semaphore acquisition process using the semaphore handle included in the Acquired semaphore notification (step S103). Specifically, the semaphore acquisition processing unit 83 checks the count value in the counter 62 of the semaphore structure 6 corresponding to the semaphore handle included in the Acquired semaphore notification, to determine whether the semaphore can be acquired …..If it is determined that the semaphore cannot be acquired ("No" at step S104), the semaphore acquisition processing unit 83 sets the process ID of the task 5 that output the Acquire semaphore command, into the pending task queue 63 of the semaphore structure 6 corresponding to the semaphore handle (step S106), para[0030] to para[0035], Fig.2/ corresponding semaphore ("No" at step S102), the association table managing unit 81 sends a Create semaphore command to the semaphore creating unit 82. Upon receiving the Create semaphore command, the semaphore creating unit 82 adds a new semaphore structure 6 to the semaphore structure array to create a semaphore (step S 108). Next, the semaphore creating unit 82 sends the association table managing unit 81 a creation completion notification, including in it the semaphore handle provided by the operating system 2 during semaphore creation, para[0037], ln 5-9 to para[0038]/ A task that needs to exert an exclusive control over the resource first creates a semaphore by a "Create semaphore" command, para[0004], ln 3-7/ the task needs to issue two commands, namely, "Acquire semaphore handle" and "Acquire semaphore", thus increasing the number of steps, para[0011], ln 5-9/ The semaphore operating unit 8 includes an association table managing unit 81 that manages the symbol-handle association table 4, a semaphore creating unit 82, para[0029], ln 1-6). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the above feature of because this manages semaphores that are used for executing exclusive control of resources in a multi-tasking operating system. Wang teaches on an address of the timeline semaphore received( the computer platform 102 includes a computer having an IBM PC architecture. The operating system 106 , which runs thereon, is the IBM OS/2 operating system. Also, the computer controller 138 includes a C/C++ programming language compiler with an API, both designed for the IBM OS/2 operating system. A semaphore is an operating system managed software flag used to coordinate the actions of concurrent threads and processes. An operating system shall first have the ability to create a semaphore. During such creation the operating system allocates memory in RAM, initializes the memory location, and returns the address (handle) of the memory location associated with the semaphore. In addition, the operating system must have a control means, such as semaphore controllers 212, to change the state of a semaphore to indicate to the threads the occurrence of an event, col 5, ln 10-30). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the above feature of because this avoids static variable initialization and reference conflicts in a multi-threaded computer system. Kouznetsov teaches the timeline semaphore having been generated by another API ( Resource synchronization and control is done using a semaphore. Included in the abstraction library is a set of functions to create, open, close and modify a semaphore object. Below is an exemplary semaphore API.TABLE-US-00054 Function Description AL_SEM_HANDLE AlSemCreate ( create a named semaphore and char const* pszName) return its handle AL_SEM_HANDLE AlSemOpen ( return a handle to an existing char const* pszName) semaphore void AlSemClose( close semaphore handle; reference AL_SEM_HANDLE hHandle) count is decremented by one, and the semaphore referenced is released if the count reaches zero. int AlsemGet ( acquire a semaphore AL_SEM_HANDLE hHandle) int AlsemRelease ( release a semaphore AL_SEM_HANDLE hHandle) (264) AlSemCreate Description Creates a named-semaphore, sets internal counter to zero, and returns its handle, Prototype AL_SEM_HANDLE AlSemCreate(char const* pszName); Parameters pszName [in] Semaphore name string. Return Value Semaphore handle if successful, INVALID_AL_SEM_HANDLE otherwise. See Also AlSemOpen( ), AlSemClose( ), AlSemGet( ), col 33, ln 40-67 to col 34, ln 1-10). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the above feature of because this allows resource synchronization and control is done using a semaphore . As to claims 8, 15, they are rejected for the same reason as to claim 1 above. As to claim 22, it is rejected for the same reason as to claim 1 above. In additional, Nankaku teaches receiving an application programming interface (API) call including an indication of a timeline semaphore, in response to the API call, causing a data structure to comprise one or more parameters of the timeline semaphore to be used to perform one or more operations based, at least in part, on the received indication of the timeline semaphore( ( Using the semaphore handle, the task[API] issues a system call to the multi-tasking operating system, and uses the resource, para[0008], ln 13-20/ a semaphore handle identifying the semaphore controlling the resource, para[0014] , ln 17-2-/ Further, in the conventional technology, first the task has to acquire the semaphore handle associated with the symbol, and then acquire the semaphore using the semaphore handle. That is, the task needs to issue two commands, namely, "Acquire semaphore handle" and "Acquire semaphore", thus increasing the number of steps, para[0011]/ assigns a handle to each semaphore (hereinafter, "semaphore handle"), para[0026], ln 12-16/ searches an identifier management table containing resource symbols and identifiers (semaphore handles) in a correlated form, para[0008], ln 4-8/ The semaphore structures 6 are arranged in a predetermined sequence (as a semaphore structure array), para[0025], ln 3-9/ Upon receiving the Acquire semaphore command, the association table managing unit 81 of the semaphore operating unit 8 retrieves from the symbol-handle association table 4, the semaphore handle corresponding to the symbol included in the Acquire semaphore command (step S101). If the symbol-handle association table 4 contains the semaphore handle corresponding to the symbol included in the Acquire semaphore command ("Yes" at step S102), the association table managing unit 81 sends an Acquired semaphore notification to the semaphore acquisition processing unit 83, including the retrieved semaphore handle therein. Upon receiving the Acquired semaphore notification, the semaphore acquisition processing unit 83 implements the semaphore acquisition process using the semaphore handle included in the Acquired semaphore notification (step S103). Specifically, the semaphore acquisition processing unit 83 checks the count value in the counter 62 of the semaphore structure 6 corresponding to the semaphore handle included in the Acquired semaphore notification, to determine whether the semaphore can be acquired ……If it is determined that the semaphore cannot be acquired ("No" at step S104), the semaphore acquisition processing unit 83 sets the process ID of the task 5 that output the Acquire semaphore command, into the pending task queue 63 of the semaphore structure 6 corresponding to the semaphore handle (step S 106). When another task 5 releases the awaited semaphore (step S107), the semaphore acquisition processing unit 83 implements the semaphore acquisition process and acquires the semaphore, para[0031] to para[0036]) / Fig.2) for the same reason as to claim 1 above. Claims 2, 4, 7, 9, 16, 24 are rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of Robbins(US 6055583 A). As to claim 2, Kouznetsov teaches the timeline semaphore was created by the other API, and wherein the timeline semaphore is used by the other API( Resource synchronization and control is done using a semaphore. Included in the abstraction library is a set of functions to create, open, close and modify a semaphore object. Below is an exemplary semaphore API.TABLE-US-00054 Function Description AL_SEM_HANDLE AlSemCreate ( create a named semaphore and char const* pszName) return its handle AL_SEM_HANDLE AlSemOpen ( return a handle to an existing char const* pszName) semaphore void AlSemClose( close semaphore handle; reference AL_SEM_HANDLE hHandle) count is decremented by one, and the semaphore referenced is released if the count reaches zero. int AlsemGet ( acquire a semaphore AL_SEM_HANDLE hHandle) int AlsemRelease ( release a semaphore AL_SEM_HANDLE hHandle) (264) AlSemCreate Description Creates a named-semaphore, sets internal counter to zero, and returns its handle, Prototype AL_SEM_HANDLE AlSemCreate(char const* pszName); Parameters pszName [in] Semaphore name string. Return Value Semaphore handle if successful, INVALID_AL_SEM_HANDLE otherwise. See Also AlSemOpen( ), AlSemClose( ), AlSemGet( ), col 33, ln 40-67 to col 34, ln 1-10) for the same reason as to claim 1 above. Robbins teaches indicate is to cause a driver to signal the timeline semaphore based on a received handle that references a memory location of the timeline semaphore( When the device driver begins to initiate a DMA transfer, the device driver sets up a control/data list in system memory (step 100) with data the DMA transfer to be performed by the DMA controller. In the next step, the device driver writes control information and a transmit command as a control signal to the DMA controller through the system bus to start the DMA transfer (step 110). The control information indicates the memory location of the control/data list and the memory location of a semaphore. After the control signal is sent, the device driver repeatedly reads the semaphore from the specified location in system memory (step 120) and checks the semaphore value (step 130). If the semaphore value has not changed, then the execution of the device driver proceeds back to step 120, where the device driver reads from the specified memory location again. On the other hand, if the semaphore value has changed, then this fact notifies the device driver that the DMA transfer has completed, signifying that the DMA controller is ready for another DMA transfer (step 140), col 4, ln 20-40/ after determine that the semaphore value is changed the DMA controller is ready to start the DMA transfer (step 110) as described above ). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of update is to cause a driver to signal the timeline semaphore based on a received handle that references a memory location of the timeline because this reduces the latency between direct memory access controllers transfers. As to claim 4, Kouznetsov teaches the timeline semaphore corresponds to an increasing integer( para[[0162]- [0163]) for the same reason as to claim 2 above. As to claim 7, Robbins teaches to referencing a memory location of the timeline semaphore based on a handle that indicates a shared memory location of the timeline semaphore( Robbins teaches update is to cause a driver to signal the timeline semaphore based on a received handle that references a memory location of the timeline semaphore( When the device driver begins to initiate a DMA transfer, the device driver sets up a control/data list in system memory (step 100) with data the DMA transfer to be performed by the DMA controller. In the next step, the device driver writes control information and a transmit command as a control signal to the DMA controller through the system bus to start the DMA transfer (step 110). The control information indicates the memory location of the control/data list and the memory location of a semaphore. After the control signal is sent, the device driver repeatedly reads the semaphore from the specified location in system memory (step 120) and checks the semaphore value (step 130). If the semaphore value has not changed, then the execution of the device driver proceeds back to step 120, where the device driver reads from the specified memory location again. On the other hand, if the semaphore value has changed, then this fact notifies the device driver that the DMA transfer has completed, signifying that the DMA controller is ready for another DMA transfer (step 140), col 4, ln 20-40/ after determine that the semaphore value is changed the DMA controller is ready to start the DMA transfer (step 110) as described above ). As to claim 9, it is rejected for the same reason as to claim 2 above. As to claim 24, it is rejected for the same reason as to claim 2 above. In additional, Kouznetsov teaches creating, by the other API, the timeline semaphore; exporting, by the other API, a handle to the timeline semaphore; importing, by the API, the exported handle of the timeline semaphore from the application( Resource synchronization and control is done using a semaphore. Included in the abstraction library is a set of functions to create, open, close and modify a semaphore object. Below is an exemplary semaphore API.TABLE-US-00054 Function Description AL_SEM_HANDLE AlSemCreate ( create a named semaphore and char const* pszName) return its handle AL_SEM_HANDLE AlSemOpen ( return a handle to an existing char const* pszName) semaphore void AlSemClose( close semaphore handle; reference AL_SEM_HANDLE hHandle) count is decremented by one, and the semaphore referenced is released if the count reaches zero. int AlsemGet ( acquire a semaphore AL_SEM_HANDLE hHandle) int AlsemRelease ( release a semaphore AL_SEM_HANDLE hHandle) (264) AlSemCreate Description Creates a named-semaphore, sets internal counter to zero, and returns its handle, Prototype AL_SEM_HANDLE AlSemCreate(char const* pszName); Parameters pszName [in] Semaphore name string. Return Value Semaphore handle if successful, INVALID_AL_SEM_HANDLE otherwise. See Also AlSemOpen( ), AlSemClose( ), AlSemGet( ), col 33, ln 40-67 to col 34, ln 1-10) for the same reason as to claim 1 above. As to claim 16, it is rejected for the same reason as to claim 7 above. As to claim 20, Robbins teaches to indicate the timeline semaphore includes looking up a memory location of the timeline semaphore based on a handle that indicates the memory location of the timeline semaphore ( When the device driver begins to initiate a DMA transfer, the device driver sets up a control/data list in system memory (step 100) with data the DMA transfer to be performed by the DMA controller. In the next step, the device driver writes control information and a transmit command as a control signal to the DMA controller through the system bus to start the DMA transfer (step 110). The control information indicates the memory location of the control/data list and the memory location of a semaphore. After the control signal is sent, the device driver repeatedly reads the semaphore from the specified location in system memory (step 120) and checks the semaphore value (step 130). If the semaphore value has not changed, then the execution of the device driver proceeds back to step 120, where the device driver reads from the specified memory location again. On the other hand, if the semaphore value has changed, then this fact notifies the device driver that the DMA transfer has completed, signifying that the DMA controller is ready for another DMA transfer (step 140), col 4, ln 20-40/ after determine that the semaphore value is changed the DMA controller is ready to start the DMA transfer (step 110) as described above ) for the same reason as to claim 2 above. . Claims 3, 10 are rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of SHIBAZAKI(JP H1063516 A). As to claim 3, Shibazakin teaches providing a maximum amount of time the timeline semaphore is to wait before it times out( The time in the current wait state, which is the result of the calculation, is added to the content of the total wait time that has been in the wait state by the semaphore to be measured, and the measured wait state is accumulated. In this case, a bottleneck detection method of detecting a semaphore having the maximum accumulated time in the measured waiting state as a bottleneck is obtained, Sec: The time in the current wait state, ln 1-10). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of indicate includes providing a maximum amount of time the timeline semaphore is to wait before it times out because this detects a bottleneck of a task with high precision by measuring the wait times of semaphores. As to claim 10, it is rejected for the same reason as to claim 3 above. Claims 5, 6, 12, 13, 17, 18, 19, 23 are rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of Stuttard(US 7958332 B2). As to claim 5, Sturrard teaches a parameter of the timeline semaphore is increased by one or more when it is signaled by a driver, and wherein a first workload corresponding to a first stream and second workload corresponding to a second stream are to signal the timeline semaphore to increase its parameter ( Signal: The semaphore is incremented. This operation can be performed by the threads, the PE Sequencer, the Load/Store Unit, or the Channel Controller. But in general a semaphore can only be signaled by one of these, as discussed below, col 12, ln 45-50/ instruction streams for the processing blocks 106 are known as Athreads@. Each thread works co-operatively with other threads to perform a task or tasks. The term "multithreading" refers to the use of several threads to perform a single task, whereas the term "multitasking" refers to the use of several threads to perform multiple tasks simultaneously. It is the thread manager 102 which manages these instruction streams or threads, col 5, ln 5-15). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of a parameter of the timeline semaphore is increased by one or more when it is signaled by a driver, and wherein a first workload corresponding to a first stream and second workload corresponding to a second stream are to signal the timeline semaphore to increase its parameter because this achieves synchronization between threads. As to claim 6, Stuttard teaches one or more circuits are to process a workload with signal and wait operations, wherein the signal and wait operations at least partially depend on the timeline semaphore( col 12, ln 43-45) for the same reason as to claim 5 above. As to claim 12, it is rejected for the same reason as to claim 5 above. As to claim 13, Stuttard teaches the timeline semaphore corresponds to object that controls access to a computing resource( col 12, ln 20-30) for the same reason as to claim 5 above. As to claim 17, it is rejected for the same reason as to claim 5 above. As to claim 18, Stuttard teaches to update is to modify a parameter of the timeline semaphore to increase by one or more when it is signaled by a driver( col 5, ln 5-15) for the same reason as to claim 5 above. As to claim 19, it is rejected for the same reason as to claim 13 above. As to claim 23, Stuttard teaches indicate further comprising: sending a signal to a driver to modify a parameter of the timeline semaphore, wherein the parameter corresponds to a count value or a wait value( col 12, ln 40-60) for the same reason as to claim 5 above . Claim 11 is rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of Thornley(US 6826752 B1). As to claim 11, Thornley teaches the timeline semaphore corresponds to a monotonically increasing integer( One type of synchronization object is a special type of counter, which can be constrained to be monotonically increasing in value. Another related type of synchronization object is a special type of flag, which can be constrained to have its value set monotonically, abstract, ln 12-17). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of the timeline semaphore corresponds to a monotonically increasing integer because this synchronizes the access of threads to shared memory in order to prevent unwanted interference. Claims 14, 21 are rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of Teng(US 4642758 A). As to claim 14, Teng teaches indicate the timeline semaphore includes to look up in an array corresponding to a handle of the timeline semaphore a parameter to signal the timeline semaphore( request to the system which is accepted by means of the I/O routine 201 of FIG. 2. The user will provide certain information about the file and the destination which is received by the I/O routine 201 and placed in the FIFO (first-in, first-out) request queue 202. This entry will be in the form of a network service request (NSR), containing the necessary information to fully define the request. The queue 202 resides in a reserved area of memory 117 and may be of any desired size commensurate with system requirements. The format for the entry is shown in FIG. 3. In addition to storing the request in the queue, the I/O routine 201 signals a semaphore, referred to as the new job semaphore (NJ), to manager module 209. This is one of a number of semaphores which serve to notify the manager module 209 of work to be done. A request for file transfer from the host computer may also be made by datagram from a remote location and entered in the request queue 202 by means of network software, not described herein. In either case, when an entry is made in the request queue, the new job (NJ) semaphore is signaled, The manager module 209 comprises a number of software routines which are executed in response to various semaphores. In general, the manager module 209 responds to the new job (NJ) semaphore by reading a request from the FIFO request queue 202 and placing it in the destination queue 206, col 4, ln 40-67/ counting semaphores are used which are incremented each time a signal is received and decremented each time they are serviced, col 6, ln 35-40). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of update the timeline semaphore includes to look up in an array corresponding to a handle of the timeline semaphore a parameter to signal the timeline semaphore because this facilities and to avoid unnecessary network congestion. As to claim 21, it is rejected for the same reason as to claim 14 above. Claim 25 is rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of Yamamoto( US 20060287820 A1). As to claim 25, Yamamoto teaches performing the API to indicate the timeline semaphore further comprises: providing, by the API, a maximum amount of time that a timeline semaphore waits before timing out(The OS_Semaphore Wait( ) function uses an operating system service to wait for Semaphore object. Function is called by the GPS threads to wait for events. TABLE-US-00098 TABLE 98 File gps_rtos.c Syntax tGPS_UINT32 OS_Semaphore_Wait( tGPS_SEMAPHORE sem_handle, tGPS_UINT32 timeout ) Parameter Data range Units Description sem_handle Semaphore object handle Timeout 0-4000000000 or ms Maximum time allowed to wait GPS_INFINITE for semaphore, para[0141]). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of teach performing the API to indicate the timeline semaphore further comprises: providing, by the API, a maximum amount of time that a timeline semaphore waits before timing out because this produces the most cost-attractive product possible for consumers. Claim 26 is rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of CASSAGNOL(CA 2309627 A1). As to claim 26, Cassagnol teaches exporting, by the other API, a handle corresponding to the timeline semaphore; importing, by a first API of a library of APIs, the handle( H. VersaCrypt Data Segment The data segments are managed by VersaCrypt applets via four systems calls to import and export a data segment and to create and delete data segments. A VersaCrypt applet may have as many as eight data segments, Sec: VersaCrypt Data Segment, ln 1-10/ VersaCrypt applets are responsible for taking care of any semaphores, Sec: H. VersaCrypt Data Segment, ln 34-37). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of exporting, by the other API, a handle corresponding to the timeline semaphore; importing, by a first API of a library of APIs, the handle because this handles message passing, semaphores, and periodic calls if needed. Claim 27 is rejected under 35 U.S.C. 103 as being unpatentable over Arakji( US 20210089481 A1) in view of Nankaku(US 20070150899 A1) in view of Wang ( US 5852731 A ) in view of Kouznetsov( US 7254811 B2) and further in view of Wilt(US 8539516 B1). As to claim 27, Wilt teaches the API is from a first software library, the another API is from a second software library, and the timeline semaphore synchronizes workloads between the first software library and the second software library( The graphics software stack 140 includes a graphics API 142 and a graphics driver 144, and the CUDA software stack 150 includes a CUDA API 152 and a CUDA driver 154, col 3, ln 50-56/ At step 812, the CUDA API 152 configures the graphics driver 144 to insert a "semaphore release" command into the graphics channel 520. Again, this command references the semaphore buffer that was created when the graphics object was registered for CUDA mapping. After the compute device 134 executes the "semaphore release" command, the CUDA channel 540 resumes execution. Advantageously, steps 812 and 814 synchronize the access to the graphics object by the CUDA API 152 and the graphics API 142, thereby ensuring that the graphics object is not simultaneously accessed by both the CUDA API 152 and the graphics API 142, col 10, ln 65-67 to col 11, ln 1-9/ semaphore acquire" command causes a particular channel to suspend execution until the specified semaphore memory is released, and a "semaphore release" command causes the compute device 134 to release the specified semaphore memory, col 7, ln 50-65/Upon receiving the "semaphore acquire" command, the graphics channel 530 suspends execution until the compute device 134 executes the CUDA commands preceding the "semaphore release" command and the "semaphore release" command. Again, these synchronization steps ensure that the graphics object 472 is not simultaneously referenced by both the CUDA context 440 and the graphics context 410, col 8, ln 35-41). It would have been obvious to one of the ordinary skill in the art before the effective filling date of claimed invention was made to modify the above teaching to incorporate the feature of the API is from a first software library, the another API is from a second software library, and the timeline semaphore synchronizes workloads between the first software library and the second software library because this reduces the speed with which the host and compute device execute the application program and, consequently, may hinder overall system performance and provides more efficient and flexible technique for enabling APIs to inter-operation. Response to the argument: A. Applicant amendment filed on 01/05/2026 has been considered but they are not persuasive: Applicant argued in substance that : “ the combination of Arakji, Herbst, and Kouznetsov fails to teach or suggest claim 1 as amended herein. Claim 1 has been amended to recite "in response to an application programming interface (API) call, causing a data structure to comprise one or more parameters of a timeline semaphore based, at least in part, on an address of the timeline semaphore received from another API, the timeline semaphore having been generated by the other API." The combination of references fails to teach or suggest at least these features of claim 1.” B . Examiner respectfully disagreed with Applicant's remarks: As to the point (1), Arakji teaches The interface controller 202 interfaces the ordering processor circuitry , col 9, ln 52-55/ Note that in the case of a 0.5 KB buffer, and assuming 4 byte addresses,128 semaphores concurrently released from interrupt handlers is supported. Such a circumstance is not likely, and a buffer of half the size (only 256 bytes) supports 64 such concurrently released semaphores, para[0021], ln 1-6/ To understand the consequences of such an interruption, consider, for example, the case where two interrupt handles A (high priority) and B (low priority) are nested. Specifically, interrupt handler B executes first, and in the system call[API] to release the semaphore, the copying of the semaphore reference to the buffer occurs as such: 1. The head of the circular buffer is read from memory. 2. The semaphore reference is stored at the location of the head. 3. The head of the circular buffer is incremented. If after step 2 executes, the interrupt handler B is interrupted by interrupt handler A, then interrupt handler A will copy its semaphore reference to the circular buffer by first reading the head variable, then storing its semaphore reference at the head location. The head variable read by interrupt handler A is the same one that was used by interrupt handler B, since interrupt handler B did not yet increment it. Thus when interrupt handler A stores its semaphore reference at the head location, it will effectively overwrite interrupt handler B's semaphore reference, para[0022] to para[0015]/ a reference to a simple structure that contains both the reference to the semaphore and to the task is stored in that buffer instead (this is allocated on the heap by the blocking task and freed by the software interrupt). Para[0029], ln 17-22). Nankaku teaches Using the semaphore handle, the task[API] issues a system call to the multi-tasking operating system, and uses the resource, para[0008], ln 13-20/ a semaphore handle identifying the semaphore controlling the resource, para[0014] , ln 17-2-/ Further, in the conventional technology, first the task has to acquire the semaphore handle associated with the symbol, and then acquire the semaphore using the semaphore handle. That is, the task needs to issue two commands, namely, "Acquire semaphore handle" and "Acquire semaphore", thus increasing the number of steps, para[0011]/ assigns a handle to each semaphore (hereinafter, "semaphore handle"), para[0026], ln 12-16/ searches an identifier management table containing resource symbols and identifiers (semaphore handles) in a correlated form, para[0008], ln 4-8/ The semaphore structures 6 are arranged in a predetermined sequence (as a semaphore structure array), para[0025], ln 3-9/ in FIG. 2 as well as with reference to FIG. 1. The task 5[API] outputs (issues) to the semaphore operating unit 8[API], an "Acquire semaphore" command including in the command, the symbol of the resource 7 to be used (step S100). Upon receiving the Acquire semaphore command, the association table managing unit 81 of the semaphore operating unit 8 retrieves from the symbol-handle association table 4, the semaphore handle corresponding to the symbol included in the Acquire semaphore command (step S101). If the symbol-handle association table 4 contains the semaphore handle corresponding to the symbol included in the Acquire semaphore command ("Yes" at step S102), the association table managing unit 81 sends an Acquired semaphore notification to the semaphore acquisition processing unit 83, including the retrieved semaphore handle therein. Upon receiving the Acquired semaphore notification, the semaphore acquisition processing unit 83 implements the semaphore acquisition process using the semaphore handle included in the Acquired semaphore notification (step S103). Specifically, the semaphore acquisition processing unit 83 checks the count value in the counter 62 of the semaphore structure 6 corresponding to the semaphore handle included in the Acquired semaphore notification, to determine whether the semaphore can be acquired …..If it is determined that the semaphore cannot be acquired ("No" at step S104), the semaphore acquisition processing unit 83 sets the process ID of the task 5 that output the Acquire semaphore command, into the pending task queue 63 of the semaphore structure 6 corresponding to the semaphore handle (step S106), para[0030] to para[0035], Fig.2/ corresponding semaphore ("No" at step S102), the association table managing unit 81 sends a Create semaphore command to the semaphore creating unit 82. Upon receiving the Create semaphore command, the semaphore creating unit 82 adds a new semaphore structure 6 to the semaphore structure array to create a semaphore (step S 108). Next, the semaphore creating unit 82 sends the association table managing unit 81 a creation completion notification, including in it the semaphore handle provided by the operating system 2 during semaphore creation, para[0037], ln 5-9 to para[0038]/ A task that needs to exert an exclusive control over the resource first creates a semaphore by a "Create semaphore" command, para[0004], ln 3-7/ the task needs to issue two commands, namely, "Acquire semaphore handle" and "Acquire semaphore", thus increasing the number of steps, para[0011], ln 5-9/ The semaphore operating unit 8 includes an association table managing unit 81 that manages the symbol-handle association table 4, a semaphore creating unit 82, para[0029], ln 1-6). Wang teaches the computer platform 102 includes a computer having an IBM PC architecture. The operating system 106 , which runs thereon, is the IBM OS/2 operating system. Also, the computer controller 138 includes a C/C++ programming language compiler with an API, both designed for the IBM OS/2 operating system. A semaphore is an operating system that managed software flag used to coordinate the actions of concurrent threads and processes. An operating system shall first have the ability to create a semaphore. During such creation the operating system allocates memory in RAM, initializes the memory location, and returns the address (handle) of the memory location associated with the semaphore. In addition, the operating system must have a control means, such as semaphore controllers 212, to change the state of a semaphore to indicate to the threads the occurrence of an event, col 5, ln 10-30). Kouznetsov teaches Resource synchronization and control is done using a semaphore. Included in the abstraction library is a set of functions to create, open, close and modify a semaphore object. Below is an exemplary semaphore API.TABLE-US-00054 Function Description AL_SEM_HANDLE AlSemCreate ( create a named semaphore and char const* pszName) return its handle AL_SEM_HANDLE AlSemOpen ( return a handle to an existing char const* pszName) semaphore void AlSemClose( close semaphore handle; reference AL_SEM_HANDLE hHandle) count is decremented by one, and the semaphore referenced is released if the count reaches zero. int AlsemGet ( acquire a semaphore AL_SEM_HANDLE hHandle) int AlsemRelease ( release a semaphore AL_SEM_HANDLE hHandle) (264) AlSemCreate Description Creates a named-semaphore, sets internal counter to zero, and returns its handle, Prototype AL_SEM_HANDLE AlSemCreate(char const* pszName); Parameters pszName [in] Semaphore name string. Return Value Semaphore handle if successful, INVALID_AL_SEM_HANDLE otherwise. See Also AlSemOpen( ), AlSemClose( ), AlSemGet( ), col 33, ln 40-67 to col 34, ln 1-10). Conclusion US 5414848 teaches the shared code VxD is operating on behalf of the calling VM. A semaphore is created by the Client API routine to identify the calling VM to the Windows process scheduler. The client API, having the handle to the semaphore stored in the instance data structure, performs the Windows system call "Wait.sub.-- Semaphore" to block on the calling VM semaphore. US 5414848 teaches the data structure generated for the first call to the shared code VxD remains unaltered. The instance data structure contains an identification of the target VM and calling VM, an address to the calling VM data parameters, and a handle to a semaphore. In addition, the instance data structure contains an area of memory for data translation. The data translation function performed in the Client API routine is described more fully below. US 7472237 B1 teaches update engine 108 updates the new semaphore data. In step 130o, the update engine 108 writes the semaphore address to the previous data (either the bucket entry or the previous semaphore). In step 130p, the update engine 108 writes the current semaphore data to the semaphore structure memory 112. US 20070150899 A1 teaches the symbol-handle association table 4 contains the semaphore handles of the semaphores associated with the symbols of the resources 7 the semaphores have exclusive control over. When the task 5 issues a semaphore operation command, the semaphore operating unit 8 acquires or releases the semaphore based on the symbol-handle association table 4 and the semaphore structure 6. US 20030115476 A1 teaches routine "destroySemaphore" receives, as an argument, a reference to the semaphore to be destroyed. The routine "destroySemaphore" employs a three local variables "pk," "i," and "numPages," declared on lines 3-4, to store the value of a protection key, US 5852731 A teaches During such creation the operating system allocates memory in RAM, initializes the memory location, and returns the address (handle) of the memory location associated with the semaphore JP 2006285596 teaches acquires the semaphore from the virtual device group management unit. The reason is that the emulation processing requesting means 160 calls the priority order obtaining means 161, then refers to the virtual device group management table 102, obtains the address of the semaphore 103, and uses the priority order obt US 20050055399 A1teaches Each asynchronous processing module may call a tcpplcl_init ( ) subroutine specifying a unique id number between 0 and 31 in order to attach to the Ring Buffer and the semaphore array. The id provided may be used by other API functions to refer to the particular semaphore in the semaphore array and the corresponding bit in the bitmask. The process may then call tcpplcl_next ( ) to get the next available TCP session. US 5469571 teaches selected data from the other data tables and structures 54 is obtained to facilitate the operation of the interrupt handler. Specifically the semaphore identifier associated with the interrupt server task and the present device driver is obtained. Any inquiry concerning this communication or earlier communications from the examiner should be directed to LECHI TRUONG whose telephone number is (571)272-3767. The examiner can normally be reached 10-8 PM. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor Young Kevin can be reached on (571)270-3180. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /LECHI TRUONG/Primary Examiner, Art Unit 2194
Read full office action

Prosecution Timeline

Show 10 earlier events
Feb 24, 2025
Non-Final Rejection mailed — §103
May 02, 2025
Examiner Interview Summary
May 02, 2025
Examiner Interview (Telephonic)
Jun 24, 2025
Response Filed
Oct 07, 2025
Final Rejection mailed — §103
Jan 05, 2026
Request for Continued Examination
Jan 23, 2026
Response after Non-Final Action
Sep 24, 2026
Non-Final Rejection mailed — §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12743300
DOUBLE-FLASH SWITCHING DEVICE AND SERVER
2y 9m to grant Granted Sep 22, 2026
Patent 12724638
MANAGEMENT APPARATUS, MANAGEMENT METHOD AND MANAGEMENT PROGRAM
2y 10m to grant Granted Sep 01, 2026
Patent 12717621
TRANSPARENTLY EXECUTING ACTIONS WITHIN A CONTAINERIZED CLOUD ENVIRONMENT
3y 8m to grant Granted Aug 25, 2026
Patent 12705088
Task Repacking
4y 5m to grant Granted Aug 11, 2026
Patent 12675339
WORKLOAD MEASURES BASED ON ACCESS LOCALITY
4y 2m to grant Granted Jul 07, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

5-6
Expected OA Rounds
87%
Grant Probability
99%
With Interview (+36.4%)
3y 0m (~0m remaining)
Median Time to Grant
High
PTA Risk
Based on 889 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month