DETAILED ACTION
Claims 1-20 are pending in the application.
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 .
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
Examiner’s Notes
The Examiner cites particular sections in the references as applied to the claims below for the convenience of the applicant(s). Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested that, in preparing responses, the applicant(s) fully consider the references in their entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the Examiner.
Specification
The use of the term BLUETOOTH, which is a trade name or a mark used in commerce, has been noted in this application. The term should be accompanied by the generic terminology; furthermore the term should be capitalized wherever it appears or, where appropriate, include a proper symbol indicating use in commerce such as ™, SM , or ® following the term.
Although the use of trade names and marks used in commerce (i.e., trademarks, service marks, certification marks, and collective marks) are permissible in patent applications, the proprietary nature of the marks should be respected and every effort made to prevent their use in any manner which might adversely affect their validity as commercial marks.
Claim Objections
Claims 4, 8, 12 and 16 are objected to because of the following informalities:
Claim 4: “based the” (line 2) should have been –based upon the—.
Claim 8: “locating” (line 2) should have been –loading—.
Claim 12: “based the” (line 2) should have been –based upon the—.
Claim 16: “locating” (line 2) should have been –loading—.
Appropriate corrections are required. Applicant is advised to review the entire claims for further needed corrections.
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.
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
Claims 1-5, 7-13, and 15-20 are rejected under 35 U.S.C. 103 as being unpatentable over Chung et al. (US 2014/0007125 A1; hereinafter Chung) in view of Abdoulaye et al. (US 2023/0393980 A1; hereinafter Abdoulaye).
With respect to claim 1, Chung teaches: A computer-implemented method, comprising:
loading an application (see e.g. Chung, Fig. 1: “Application_A 118”) into a local address space (see e.g. Chung, paragraph 22: “ CRSM 112 is illustrated storing logic associated with an operating system (OS) 114, a runtime execution server (RES) 116 and two (2) computer software applications, i.e., an application_A 118 and an application_B 120”; paragraph 23; and Fig. 1);
intercepting, by an interceptor (see e.g. Chung, paragraph 22: “augmented class loader (ACL) 122”; and Fig. 2), a request by the application to load a target shared library (see e.g. Chung, paragraph 31: “ACL 122 subsequently receives a request to load library”; paragraph 37: ““Receive Load Request” block 204… application_A 118 (FIGS. 1 and 3), application_B 120 (FIGS. 1 and 3) and application_C 164 (FIG. 3), is either loaded or requests that the library or artifact be loaded or loaded when first referenced within an application”; paragraph 35: “enables application_A 118 and Application_B 120 to share a single library lib_1 VS 192”);
selecting, based upon the loading count (see e.g. Chung, Fig. 4: “Increment Lib Ref Count 218”) and the loading policy (see e.g. Chung, Fig. 4: “App Excluded? 206”; and paragraph 39: “determination is made as to whether or not the application that requested the library or artifact be loaded is an "excluded" application”), between:
loading the target shared library as a shared library container (see e.g. Chung, Fig. 3: “VSR 152”; paragraph 42: “During processing associated with block 216, the library for which a load request has been received is loaded into VSR 152”; paragraph 43: “the count (see 158, FIG. 2) of applications referencing a particular library in VSR 152 is incremented”; and Fig. 4, steps 206, 216, 218), and
loading the target shared library into the local address space (see e.g. Chung, Fig. 3: “App_A Scope 182”; paragraph 39: “If so, control proceeds to a "Load Library" block 208. During processing, associated with block 208, the library being loaded is loaded in a normal fashion, i.e., all included libraries are loaded within the scope of the requesting application”; and Fig. 4, steps 206, 208); and
loading the target shared library based upon the selecting (see e.g. Chung, paragraph 39: “determination is made as to whether or not the application that requested the library or artifact be loaded is an "excluded" application… If so, control proceeds to a "Load Library" block 208”; paragraph 42: “During processing associated with block 216, the library for which a load request has been received is loaded into VSR 152”; and Fig 4, steps 206, 208, 216), wherein the loading count represents a number of times the target shared library was loaded (see e.g. Chung, paragraph 27: “Library reference counts 158 stores information on particular virtual libraries in virtual libraries 162 (see 192, 194, FIG. 3), specifically the number of applications current sharing a particular virtual library… a count associated with each library loaded”; paragraph 42: “During processing associated with block 216, the library for which a load request has been received is loaded into VSR 152”; paragraph 43: “During processing associated with an "Increment Lib Reference (Ref.) Count" block 218, the count (see 158, FIG. 2) of applications referencing a particular library in VSR 152 is incremented”; and Fig. 4, steps 216, 218), and the loading policy indicates how the target shared library is to be loaded (see e.g. Chung, paragraph 39: “During processing associated with block an "App Excluded?" block 206, a determination is made as to whether or not the application that requested the library or artifact be loaded is an "excluded" application," i.e. an application that an administrator has indicated should maintain all referenced libraries within its own scope. (see 154, FIG. 2). If so, control proceeds to a "Load Library" block 208. During processing, associated with block 208, the library being loaded is loaded in a normal fashion, i.e., all included libraries are loaded within the scope of the requesting application”; paragraph 40: “If during processing associated with block 206 a determination is made that the requesting application is not an "excluded" application, control proceeds”; and paragraph 42: “During processing associated with block 216, the library for which a load request has been received is loaded into VSR 152”).
Even though Chung discloses maintaining a load count for each library (see e.g. Chung, paragraph 27) and application “exclusion” policies (see e.g. Chung, paragraph 39), Chung does not explicitly disclose maintaining and/or searching a data structure (e.g. a shared library correlation table) for storing such elements.
However, Abdoulaye teaches:
searching, using the interceptor (see e.g. Abdoulaye, paragraph 23: “dynamic linker/loader”) and based upon the request being intercepted (see e.g. Abdoulaye, paragraph 23: “library routine can communicate to the dynamic linker/loader”), a shared library correlation table (see e.g. Abdoulaye, Fig. 4) for a loading count and a loading policy associated with the target shared library (see e.g. Abdoulaye, paragraph 23: “library routine can communicate to the dynamic linker/loader specifically which protocol and type that the library routine is looking information for, and the dynamic linker/loader can return an answer as the return value of the function. The library routine can then use the return value to continue doing the rest of its internal work”);
Chung and Abdoulaye are analogous art because they are in the same field of endeavor: dynamically loading libraries as required by executing applications. Therefore, it would have been obvious to one with ordinary skill in the art before the effective filing date of the claimed invention to modify Chung with the teachings of Abdoulaye. The motivation/suggestion would be to store the library reference counts (i.e. load counts) and application “exclusion” policies (i.e. library load policy/protocol) as disclosed by Chung in a searchable table for loading libraries as disclosed by Abdoulaye; thus improving the overall processing efficiency ACL 122 (see e.g. Abdoulaye, paragraph 22).
With respect to claim 2, Chung as modified teaches: The method of claim 1, wherein
the loading count (see e.g. Chung, paragraph 27: “Library reference counts 158 stores information on particular virtual libraries in virtual libraries 162 (see 192, 194, FIG. 3), specifically the number of applications current sharing a particular virtual library… a count associated with each library loaded”),
the loading policy (see e.g. Chung, paragraph 39: “determination is made as to whether or not the application that requested the library or artifact be loaded is an "excluded" application”), and
one of a local handle (see e.g. Chung, Fig. 3: “Library_1 124”; and paragraph 35 “library_1 124, including TD_1 126 in both app_A scope 182 and App_B scope 184 point to, or reference lib_1 VS 192”) and a container ID (see e.g. Chung, Fig. 3: “VSR 152”; and paragraph 35 “library_1 124, including TD_1 126 in both app_A scope 182 and App_B scope 184 point to, or reference lib_1 VS 192”),
the local handle is associated with a pointer to the target shared library loaded in the local memory space (see e.g. Chung, paragraph 35 “library_1 124, including TD_1 126 in both app_A scope 182 and App_B scope 184 point to, or reference lib_1 VS 192”; and Fig. 3: “Library_1 124”), and the container ID is an identification of the shared library container of the target shared library (see e.g. Chung, paragraph 35: “library_1 124, including TD_1 126 in both app_A scope 182 and App_B scope 184 point to, or reference lib_1 VS 192, which is stored in VSR 152 (FIGS. 1 and 2)”).
Chung does not but Abdoulaye teaches:
the shared library correlation table includes, for each of a plurality of target shared libraries (see e.g. Abdoulaye, paragraph 22: “dynamic linker/loader can parse the executable and its dependent libraries at launch and store the results of in a table… specific information about a protocol and type in everything it has parsed/computed”; and paragraph 23: “library routine can communicate to the dynamic linker/loader specifically which protocol and type that the library routine is looking information for, and the dynamic linker/loader can return an answer as the return value of the function. The library routine can then use the return value to continue doing the rest of its internal work”):
Chung and Abdoulaye are analogous art because they are in the same field of endeavor: dynamically loading libraries as required by executing applications. Therefore, it would have been obvious to one with ordinary skill in the art before the effective filing date of the claimed invention to modify Chung with the teachings of Abdoulaye. The motivation/suggestion would be to store the library reference counts (i.e. load counts), application “exclusion” policies (i.e. library load policy/protocol), library references, and VSR identification as disclosed by Chung in a searchable table for loading libraries as disclosed by Abdoulaye; thus improving the overall processing efficiency ACL 122 (see e.g. Abdoulaye, paragraph 22).
With respect to claim 3, Chung as modified teaches: The method of claim 1, wherein
upon the interceptor intercepting a request to unload the target shared library (see e.g. Chung, paragraph 48: “during processing associated with a "Delete Lib From VSR" block 264, the library currently being processed is deleted from VSR 152”), one of the local handle and the container ID for the target shared library is retrieved by the interceptor from the shared library correlation table (see e.g. Chung, paragraph 48: “During processing associated with a "Zero Count?" block 262, a determination is made as to whether or not the count associated the library currently being processed has reached zero, i.e. indicating that there are no currently loaded applications that reference the library. If so, during processing associated with a "Delete Lib From VSR" block 264, the library currently being processed is deleted from VSR 152”).
With respect to claim 4, Chung as modified teaches: The method of claim 3, wherein
the interceptor is configured, based the local handle being retrieved (see e.g. Chung, paragraph 46: “"Receive Stop Event" block 254. During processing associate with block 254, a request is received by RES 116 (FIG. 1) to halt execution of an application such as applications 118, 120 and 164 (FIGS. 1 and 3). During processing associated with a "Scan for VSR" block 256, VSR 152 (FIGS. 1 and 2) is scanned for indications of any libraries that have been loaded in association with the application being halted”), to forward the local handler to a dynamic linker to unload the target shared library from the local address space (see e.g. Chung, paragraph 48: “During processing associated with a "Zero Count?" block 262, a determination is made as to whether or not the count associated the library currently being processed has reached zero, i.e. indicating that there are no currently loaded applications that reference the library. If so, during processing associated with a "Delete Lib From VSR" block 264, the library currently being processed is deleted from VSR 152”).
With respect to claim 5, Chung as modified teaches: The method of claim 3, wherein
the interceptor module is configured, based upon the container ID being retrieved (see e.g. Chung, paragraph 46: “"Receive Stop Event" block 254. During processing associate with block 254, a request is received by RES 116 (FIG. 1) to halt execution of an application such as applications 118, 120 and 164 (FIGS. 1 and 3). During processing associated with a "Scan for VSR" block 256, VSR 152 (FIGS. 1 and 2) is scanned for indications of any libraries that have been loaded in association with the application being halted”), to forward the container ID to a container handler to unload the target shared library (see e.g. Chung, paragraph 48: “During processing associated with a "Zero Count?" block 262, a determination is made as to whether or not the count associated the library currently being processed has reached zero, i.e. indicating that there are no currently loaded applications that reference the library. If so, during processing associated with a "Delete Lib From VSR" block 264, the library currently being processed is deleted from VSR 152”).
With respect to claim 7, Chung as modified teaches: The method of claim 1, wherein
based upon the loading count being an initial value (see e.g. Chung, paragraph 27: “VSR 152 includes library reference counts 158… Library reference counts 158 stores information on particular virtual libraries in virtual libraries 162 (see 192, 194, FIG. 3), specifically the number of applications current sharing a particular virtual library”),
a dynamic linker is invoked to load the target shared library, the loading count is incremented to generate an incremented loading count (see e.g. Chung, paragraph 43: “During processing associated with an "Increment Lib Reference (Ref.) Count" block 218, the count (see 158, FIG. 2) of applications referencing a particular library in VSR 152 is incremented”), and
the incremented loading count is stored within the shared library correlation table (see e.g. Chung, paragraph 27: “Library reference counts 158 stores information on particular virtual libraries in virtual libraries 162 (see 192, 194, FIG. 3), specifically the number of applications current sharing a particular virtual library”; and paragraph 43: “During processing associated with an "Increment Lib Reference (Ref.) Count" block 218, the count (see 158, FIG. 2) of applications referencing a particular library in VSR 152 is incremented”).
With respect to claim 8, Chung as modified teaches: The method of claim 1, wherein
based upon the locating count being greater than an initial value (see e.g. Chung, paragraph 27: “Library reference counts 158 stores information on particular virtual libraries in virtual libraries 162 (see 192, 194, FIG. 3), specifically the number of applications current sharing a particular virtual library”) and the load policy indicates to load the target shared library as a container (see e.g. Chung, paragraph 42: “During processing associated with block 216, the library for which a load request has been received is loaded into VSR 152”),
a container platform is invoked to load the shared library container (see e.g. Chung, paragraph 42: “During processing associated with block 216, the library for which a load request has been received is loaded into VSR 152”; and paragraph 43: “During processing associated with an "Increment Lib Reference (Ref.) Count" block 218, the count (see 158, FIG. 2) of applications referencing a particular library in VSR 152 is incremented”).
With respect to claims 9-13, 15, and 16: Claims 9-13, 15, and 16 are directed to a computer hardware system comprising a hardware processor configured to perform executable operations corresponding to the method disclosed in claims 1-5, 7, and 8, respectively; please see the rejections directed to claims 1-5, 7, and 8 above which also cover the limitations recited in claims 9-13, 15, and 16. Note that, Chung also discloses a general purpose computer comprising a processor to execute computer program instructions to implement the method recited in claims 1-5, 7, and 8 (see e.g. Chung, paragraph 18).
With respect to claims 17-20: Claims 17-20 are directed to corresponding to the method disclosed in claims 1-3 and 7, respectively; please see the rejections directed to claims 1-3 and 7 above which also cover the limitations recited in claims 17-20. Note that, Chung also discloses computer program instructions stored in a computer readable medium to direct a computer to implement active functions corresponding to the method disclosed in claims 1-3 and 7 (see e.g. Chung, paragraphs 18-19).
Allowable Subject Matter
Claims 6 and 14 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
CONCLUSION
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure:
Biswas et al. (US 2008/0098368 A1) discloses tracking load counters for application libraries, sorting the load counters, and using the sorted load counters to determine an order in which to generate a native image for some or all of the application libraries (see paragraph 21).
Kato et al. (US 2007/0288944 A1) discloses maintaining a load-state management information including a count number with a reference count of a loaded shared library (see paragraph 59).
Russello (US 2015/0332043 A1) discloses a security system that intercepts a dlopen function call with a dlopen proxy function and invokes a corresponding proxy function library (see paragraph 318).
Contact Information
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Umut Onat whose telephone number is (571)270-1735. The examiner can normally be reached M-Th 9:00-7:30.
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, Kevin L Young can be reached at (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.
/UMUT ONAT/Primary Examiner, Art Unit 2194