A method, apparatus and computer program are provided for loading files during a boot-up process. In the context of a method, the method includes identifying at least one new file to be loaded in a computing device during a boot-up process of said computing device. Also, determining if loading at least one of the identified new file(s) causes the computing device to crash. Also, updating a list on the computing device in dependence on whether the loading of the identified new file(s) causes the computing device to crash. Also, loading at least one file in the computing device during a boot-up process in dependence on the list, to prevent the computing device crashing during the boot-up process.
|
1. A method comprising:
identifying at least one new file to be loaded in a computing device during a boot-up process of the computing device;
writing a representation of at least one of the identified new file in an invalid portion of a list on the computing device, wherein the list comprises a valid portion and the invalid portion;
determining if loading at least one of the identified new file causes the computing device to crash;
updating a list on the computing device in dependence on whether the loading of the identified new file causes the computing device to crash, wherein in an instance in which loading the identified new file causes the computing device to crash, the representation is maintained in the invalid potion, and wherein in an instance in which the loading the identified new file does not cause the computing device to crash, the representation is moved to the valid portion;
identifying a default file associated with the identified new file which causes the computing device to crash; and
loading a file from the at least one new file in the computing device during a boot-up process of the computing device in dependence on the list to prevent the computing device crashing during the boot-up process;
wherein the default file is loaded in the place of the identified new file which causes the computing device to crash.
7. An apparatus comprising:
a processor; and
memory including computer program code, the memory and computer program code configured in use to, with the at least one processor, cause the apparatus to perform at least the following:
identify any new files to be loaded in the apparatus during a boot-up process of the apparatus;
write a representation of at least one of the identified new file in an invalid portion list on the apparatus, wherein the list comprises a valid portion and the invalid portion;
determine if loading at least one of the identified new files causes the apparatus to crash;
update a list on the apparatus in dependence on whether the loading of the identified new file causes the apparatus to crash, wherein in an instance in which loading the identified new file causes the apparatus to crash, the representation is maintained in the invalid potion, and wherein in an instance in which the loading the identified new file does not cause the apparatus to crash, the representation is moved to the valid portion;
identify a default file associated with the identified new file which causes the apparatus to crash; and
load a file from the at least one new file in the apparatus during a boot-up process of the apparatus in dependence on the list to prevent the apparatus crashing during the boot-up process;
wherein the default file is loaded in the place of the identified new file which causes the apparatus to crash.
13. A computer program product comprising at least one computer-readable storage medium, the computer-readable storage medium comprising a set of instructions, which, when executed by one or more processors, cause an apparatus at least to perform:
identify at least one new file to be loaded in a computing device during a boot-up process of the computing device;
write a representation of at least one of the identified new file in an invalid portion of a list on the computing device, wherein the list comprises a valid portion and the invalid portion;
determine if loading at least one of the identified new file causes the computing device to crash;
update a list on the computing device in dependence on whether the loading of the identified new file causes the computing device to crash, wherein in an instance in which loading the identified new file causes the computing device to crash, the representation is maintained in the invalid potion, and wherein in an instance in which the loading the identified new file does not cause the computing device to crash, the representation is moved to the valid portion;
identify a default file associated with the identified new file which causes the computing device to crash; and
load a file from the at least one new file in the computing device during a boot-up process of the computing device in dependence on the list to prevent the computing device crashing during the boot-up process;
wherein the default file is loaded in the place of the identified new file which causes the computing device to crash.
2. The method according to
3. The method according to
4. The method according to
5. The method according to
6. The method of
8. The apparatus according to
9. The apparatus according to
10. The apparatus according to
11. The apparatus according to
12. The apparatus of
14. The computer program product according to
15. The computer program product according to
16. The computer program product according to
17. The computer program product according to
18. The computer program product of
|
This application was originally filed as PCT Application No. PCT/IB2010/052321 filed May 25, 2010, which claims priority benefit to Great Britain Patent Application No. 0911337.4, filed Jun. 30, 2009.
Embodiments of the present invention relate generally to computing devices. More particularly, embodiments relate to a method, apparatus and computer program for loading files during a boot-up process of said computing devices.
When a computing device is switched on or after it has been rebooted, the computing device performs a boot-up process to initialise the device. The boot-up process involves the loading of a number of files. In the event one of the files is corrupt the computing device may crash when trying to load the corrupt file and consequently need to reboot. However, the corrupt file can lead to a continuous reboot cycle, wherein the device never completes the boot-up process.
Various aspects of examples of the invention are set out in the claims.
A first example of the invention provides a method, comprising:
identifying at least one new file to be loaded in a computing device during a boot-up process of said computing device, determining if loading at least one of the identified new file(s) causes said computing device to crash, and updating a list on said computing device in dependence on whether the loading of the identified new file(s) causes said computing device to crash; and,
loading at least one file in said computing device during a boot-up process of said computing device in dependence on said list to prevent said computing device crashing during the boot-up process.
In an example, determining if loading at least one of the identified new file(s) causes said computing device to crash comprises loading the identified new file(s) and detecting if said computing device has not crashed. In another example, detecting that said computing device has not crashed comprises detecting that said computing device is operational.
In an example, determining if loading at least one of the identified new file(s) causes said computing device to crash further comprises performing a verification test on the identified new file(s) before the identified new file(s) is/are loaded. In another example, it is determined that loading an identified new file causes said computing device to crash if the identified new file fails the verification test. In a further example, the verification test comprises determining that the size of the identified new file is greater than zero.
In an example, said list comprises an invalid portion, and a representation of an identified new file is stored in said invalid portion if it is determined that loading the identified new file causes said computing device to crash. In another example, said list further comprises a valid portion, and a representation of an identified new file is stored in said valid portion if it is determined that loading the identified new file does not cause said computing device to crash. In another example, step a. further comprises writing a representation of at least one of the identified new file(s) in said invalid portion, and updating said list comprises moving a representation to said valid portion if loading the identified new file corresponding to the representation is determined not to cause said computing device to crash. In a further example, each representation written in said invalid portion is tagged, and updating said list further comprises de-tagging a representation in said invalid portion if loading the identified new file corresponding to the representation is determined to cause said computing device to crash.
In an example, step b. comprises not loading files having a representation in said invalid portion. In another example, step b. comprises loading files having a representation in said valid portion.
In an example, the method further comprises detecting a modification to a file having a representation in said list, and removing said representation from said list.
In an example, identifying at least one new file to be loaded in the computing device during a boot-up process of said computing device comprises identifying files to be loaded during the boot-up process which do not have a representation in said list. In another example, identifying at least one new file to be loaded in the computing device during a boot-up process of said computing device further comprises identifying files corresponding to one or more representation(s) received from the computing device which do not have a representation in said list.
A second example of the invention provides an apparatus, comprising:
a processor
memory including computer program code
the memory and computer program code configured in use to, with the processor, cause the apparatus to perform at least the following:
identify any new files to be loaded in a computing device during a boot-up process of said computing device, determining if loading at least one of the identified new file(s) causes said computing device to crash, and updating a list on said computing device in dependence on whether the loading of the identified new file(s) causes said computing device to crash; and,
load at least one file in said computing device during a boot-up process of said computing device in dependence on said list to prevent said computing device crashing during the boot-up process.
A third example of the invention provides a computer program, comprising: code for identifying at least one new file to be loaded in a computing device during a boot-up process of said computing device, determining if loading at least one of the identified new file(s) causes said computing device to crash, and updating a list on said computing device in dependence on whether the loading of the identified new file(s) causes said computing device to crash; and,
code for loading at least one file in said computing device during a boot-up process of said computing device in dependence on said list to prevent said computing device crashing during the boot-up process.
In an example, the computer program is a computer program product comprising a computer-readable medium bearing a computer program code embodied therein for use with a computer.
A fourth example of the invention provides a computer-readable medium encoded with instructions that, when executed by a computer:
identify any new files to be loaded in a computing device during a boot-up process of said computing device, determining if loading at least one of the identified new file(s) causes said computing device to crash, and updating a list on said computing device in dependence on whether the loading of the identified new file(s) causes said computing device to crash; and,
load at least one file in said computing device during a boot-up process of said computing device in dependence on said list to prevent said computing device crashing during the boot-up process.
A fifth example of the invention provides an apparatus, comprising:
means for identifying at least one new file to be loaded in a computing device during a boot-up process of said computing device, said means being configured to determine if loading at least one of the identified new file(s) causes said computing device to crash, and said means being configured to update a list on said computing device in dependence on whether the loading of the identified new file(s) causes said computing device to crash; and,
means for loading at least one file in said computing device during a boot-up process of said computing device in dependence on said list to prevent said computing device crashing during the boot-up process.
Embodiments are hereinafter described with reference to the accompanying diagrams where:
A description of a number of embodiments follows, provided by way of example only.
The device 10 is a computing device which operates as a mobile phone. However, further embodiments relate to other computing devices which do not include telephony as their major function.
Memory controller 32 controls the access to, and interaction with, volatile memory 34 and non-volatile memory 36. In this manner the application processor 24 is able to communicate with the various hardware elements as well as the memory controller 32 and thereby control the operation of the various hardware elements according to software instructions stored on volatile memory 34 or non-volatile memory 36.
Only a single bus, bus 42, is illustrated in
The OS 50 in this example also comprises a font server 51. One of the roles of the font server is to load font files during a boot-up process of the device 10, for example, after the device is switched on or following a reboot. In the present embodiment, the font server 51 loads each font file stored on the non-volatile memory 36 into the volatile memory 34. This operation enables the font corresponding to the font file for use by software of the device 10, such as, for example, the applications 44.
The OS 50 communicates with the keypad 14 by means of device driver 52, with speaker 18 by means of device driver 54 and with the display 16 by means of device driver 56. Only some of the hardware components have been illustrated but, generally, the OS 50 controls the hardware resources of the device 10 through various device drivers. Furthermore, although the device drivers have been illustrated as separate to the OS 50, it is possible for them to be incorporated into the OS 50.
The software components of
During operation of the device, software instructions stored in non-volatile memory 36 establish the OS 50, the applications 44 and the device drivers 52, 54 and 56. Through the use of the various components illustrated in
The illustration of
In any case, during the system start-up step 106 (
At step 300, the device 10 is booted up. In the present case, a user of the device initiates the boot up by pressing a power button (not shown) of the device 10. However, it is equally valid that a reboot causes the device to boot-up. Also, the re-boot could be initiated by a user of the device, an application of the device or the OS 50. In any case, processing flows to step 302, once the boot up process 98 reaches step 106, i.e. system start up. At step 302, the font server 51 is initialised. This causes processing to flow to step 304, wherein the font server 51 checks for the presence of the list file 38 on the non-volatile memory 36. In the present embodiment, if the list file 38 is stored on the non-volatile memory 36 it is located at a specific memory location. However, in other embodiments, the list file 38 may be stored anywhere on the non-volatile memory 36 and the font server 51 is capable of searching the non-volatile memory 36 in order to locate the file. In any case, if the list file 38 is present on the non-volatile memory 36 then processing flows to step 306, which is discussed later. Alternatively, if no list file is present, processing flows to step 308. If no list file is present then this generally indicates that this is the first time that the device 10 has been activated, or the device 10 has just been formatted.
At step 308, the font server creates a new list file on the non-volatile memory 36. The list file comprises two list portions, an invalid list portion (hereinafter, ‘invalid list’) and a valid list portion (hereinafter, ‘valid list’). Each list of the list file 38 is for storing one or a number of file representations. In the present embodiment each representation comprises a filename. However, in some other embodiments other representation types are used, such as, for example, a file location or a unique file identifier. Once the new list file has been created processing flows to step 310. At step 310, the font server 51 identifies a font file which is not listed in either list of the list file 38. The lists of the list file 38 are currently blank and therefore there will be a number of font files which are present and not listed. Therefore, in step 310 the font server 51 selects one of them in accordance with its internal logic. In the present embodiment, the font server 51 will identify the first font file according to the order in which they are stored on the non-volatile memory 36. However, in other embodiments other orders are equally valid, for example, the font server 51 could identify the first font file in alphabetical order. In any case, once the first font file has been identified processing flows to step 312.
At step 312, the font server 51 writes a representation of the identified font file into the invalid list of the list file 38. As mentioned above, the representation comprises the name of the file. Next, at step 314, the font server 51 tags the font file name as ‘new’, following which processing flows to step 316. At step 316, the font server 51 loads the font file and processing flows to step 318. At step 318, there are two possible outcomes to the file loading operation. Either the font file loads successfully, in which case processing flows to step 320, or the font file does not load successfully, in which case processing flows to step 322. Processing may flow to step 322 if the font file is corrupt. At step 322, the device 10 crashes and reboots, after which processing flows back to step 300. Returning to step 300 causes the font server operation to start again as defined by the flow diagram of
At step 320, the font server moves the font file name from the invalid list to the valid list, and removes the ‘new’ tag. Once the file name has been moved processing flows to step 324, wherein the font server identifies if any other font files are present which are not yet listed. At present only one file name has been listed and therefore, it is highly likely that further font file names will be present. In this case, processing will flow around the above-described loop until processing returns to step 324 and there are no further font files which are present on the non-volatile memory 36 and which are not listed in the list file 38. At this time, processing will flow from step 324 to step 326 wherein font file loading is complete. Once font file loading is complete the boot process 98 returns to step 106 of
As mentioned briefly above, at step 304, if a list file is present, processing flows to step 306. It is noted that this will generally be the case unless the device is being booted up for the first time or following being formatted. At step 306, the font server 51 loads all of the font files listed in the valid list, following which processing flows to step 328. At step 328, the font server 51 searches the list file 38 to identify any font file names in the invalid list which have been tagged ‘new’. In the event that no tagged font file names are found processing flows to step 324, which was discussed above. Alternatively, if a tagged font file name is identified in step 328, processing flows to step 330. Processing will flow in this way if the last time the file server 51 operated, it attempted to load a font file which caused the device 10 to crash. In other words, processing flowed via step 322 back to step 300, and then from step 300, via steps 302, 304, 306, 328 to step 330. In this case, at step 330, the new tag is removed and the font file name is left in the invalid list. Leaving the font file name in the invalid list in an untagged state shows that the font file should not be loaded as it will cause the device 10 to crash during boot-up. According to this operation, continuous rebooting cycles are avoided. Once the ‘new’ tag is removed at step 330, processing flows to step 324, which was discussed above.
According to the above described operation of the first embodiment of the invention, once each font file stored in the non-volatile memory has been loaded its file name appears in the list file 38. In particular, the file name is written in the valid list if the font file loads successfully, or the invalid list if it does not load successfully. Once each font file name has been written in the list file 38, the next time the device 10 is booted up, only those font files in the valid list are loaded by the font server 51. Any font files in the invalid list are not loaded. Accordingly, continuous reboot cycles are avoided. In particular, a font file which causes the device to crash while booting is only permitted to be loaded once, thereafter its name is stored in the invalid list and it will not be loaded during boot-up again.
It is to be understood that the font server provides a means for identifying files to be loaded during a boot-up process of the device 10. The font server also provides a means for determining if loading a file causes the device 10 to crash. The font server also provides a means for updating the list file 38 to indicate whether loading a particular file causes the device 10 to crash. The font server also provides a means for loading files during the boot-up process in dependence on the content of the list file 38.
In the event a new font file is loaded onto the non-volatile memory 36, during the next boot up following the addition of the new font file, the font server 51 detects the presence of the new file at step 324 and adds the name of the new file to the invalid list of the list file 38 at step 312. If the new file loads successfully its name is moved to the valid list at step 322. Alternatively, if the file does not load successfully then its name remains in the invalid list. It is noted that a new font file can be added to the device 10 in a number of ways. For example, the user could install a new application onto the device 10 which could include one or a number of new font files. Additionally or alternatively, an automatic software update may add one or number of new font files to the device 10.
In the event that an existing font file is modified, the font server 51 detects this and ensures that the file name is re-inserted into the invalid list and tagged as new. If the unmodified version of the file was in the valid list then this entry is removed at the same time. Accordingly, the modified file will be treated as a new file again and will only be moved to the valid list if it does not cause the device 10 to crash when the file is loaded.
It is an advantage of the first embodiment that the number of times a file is written to in order to protect the device 10 from continuous reboot cycles is minimised. Accordingly, any boot-up time increase resulting from the above-described operation of the font server is also minimised. In turn, this means that boot-up time is not prolonged unnecessarily which would degrade the user experience. In particular, the list file 38 is only written to at the beginning to position the file name of each font file in the correct list. Once all the font file names are in the correct list, the font server only reads from the list file 38 to establish which files to load. Stated differently, the font server does not have to write to the list file once the file name of each font file on the device 10 is positioned in the correct list. Accordingly, the font server can automatically detect invalid files without having to perform any file writes.
In the first embodiment, the non-volatile memory is a flash memory drive. A further advantage of the operation of the first embodiment is that excessive wear on the flash drive is reduced. In particular, excessive wear can occur if repeated writing operations are performed on the flash drive. As the operation of the first embodiment minimises the number of file writes necessary to detect invalid files, the first embodiment also prolongs the life of the flash memory.
It is an advantage of the first embodiment that the list file 38 is created and automatically updated by the font server 51. Moreover, it is not the responsibility of a user of the device to maintain the list file 38. This is an advantage as to maintain the list file 38 the user would have to have an intimate knowledge of the font files present on the device 10. According to the first embodiment, the user can simply install new font files onto the device and the font server will automatically detect invalid files and automatically protect the device 10 from continuous reboot cycling.
In the first embodiment, the list file 38 comprised two lists, an invalid list and a valid list. However, in other embodiments, it would be equally valid for the font server to create and manage two list files, wherein one file contains the valid list and the other contains the invalid list. The list file may be a text file, a binary file, an XML file, or of any other file type.
In the first embodiment, when the font server inserts a new font file name into the list file the font server tags that file name as new. The purpose of this being that the font server knows which file to move to the valid list in the event that a file load is successful. In other embodiments, the font server does not need to tag file names. However, in such embodiments the font server has to remember the file name of the current file being tested so that it knows which file name to move to the valid list if a loading test is passed (step 318).
The operation of
At step 314, a new font file name which has been inserted into the invalid list is tagged as ‘new’. In
An advantage of the second embodiment is that the font server can identify, in certain cases, a font file which will crash the device 10 if it is loaded. Accordingly, upon identifying such a font file, the font server can avoid loading the file. Further, the font server can de-tag the file name and leave it in the invalid list so that the file is not loaded during boot-up. Therefore, the second embodiment avoids having to go through the process of loading the corrupt file, crashing the device and re-booting device. According to this operation, the second embodiment can reduce the boot-up time and thereby improve the user experience.
In the second embodiment the font server performed a single verification test. In other embodiments of the invention any number of verification tests may be performed. Furthermore, a different verification test may be performed. For example, the font server could determine if the memory tables that the font file points to are correct, that the font file contains the correct syntax, or that the font file contains the correct data type.
In addition, the advantages and alternative features stated in connection with the first embodiment apply equally to the second embodiment.
In
At step 300, the device 10 boots-up. In the present case, a user of the device initiates the boot up by pressing a power button (not shown) of the device 10. However, it is equally valid that a reboot causes the device to boot-up. Also, the re-boot could be initiated by a user of the device, or an application of the device, such as, the OS 50. In any case, processing flows to step 502, once the boot up process 98 reaches step 106, i.e. system start up.
At step 502, the verification server 500 is initialised. This causes processing to flow to step 304, wherein the verification server 500 checks for the presence of the list file 38 on the non-volatile memory 36. In the present embodiment, if the list file 38 is stored on the non-volatile memory 36 it is located at a specific memory location. However, in other embodiments, the list file 38 may be stored anywhere on the non-volatile memory 36 and the verification server 500 is capable of searching the non-volatile memory 36 in order to locate it. In any case, if the list file 38 is present on the non-volatile memory 36 then processing flows to step 504, which is discussed later. Alternatively, if no list file is present, processing flows to step 308. If no list file is present then this generally indicates that this is the first time that the device 10 has been activated, or the device 10 has just been formatted.
At step 308, the verification server 500 creates a new list file on the non-volatile memory 36. The list file comprises two list portions, an invalid list portion and a valid list portion. Each list of the list file 38 is for storing one or a number of file representations. In the present embodiment, the file representations comprise file names. Once the new list file has been created, processing flows to step 504.
At step 504, the verification server 500 waits until a verification request is received from one of the OS system services 200a-n. When a verification request is received processing flows from step 504 to step 506. It is noted that each verification request received by the verification server 500 comprises a representation of a file. In the third embodiment, the representation comprises the file name. However, in some other embodiments it is equally valid that other file representations are used. For example, in some embodiments a file location or a unique file identifier is used. Moreover, the verification request is a request from an OS system service to confirm if the file who's file name accompanies the request is valid. At step 506, the verification server 500 identifies whether the file name passed with the request is listed in the valid list of the list file 38. In the event that it is, processing flows from step 506 to step 508, wherein the verification server 500 responds to the OS system service which sent the verification request. In particular, the verification server 500 confirms that the OS system service can safely load the file without crashing the device 10.
Alternatively, if at step 506 the file name is not in the valid list, processing flows to step 510. At step 510, the verification server 500 determines if the file name is in the invalid list. If it is then processing flows to step 512, else processing flows to step 312. At step 512, the verification server 500 checks to see if the file name is tagged as new in the invalid list. This will be the case if the last time the verification server 500 was operated it loaded the file and that crashed the device 10. In this case, the new tag is removed from the file name at step 330, following which processing flows to step 514. Alternatively, if the file name is not tagged then processing flows from step 512 directly to step 514. At step 514, the verification server 500 responds to the OS system service which made the initial verification request at step 504 and tells that OS system service not to load the file.
As mentioned briefly above, processing flows from step 510 to step 312 if the file name is not in either the valid or invalid list of the list file 38. This will be the case if the file represented by the file name is a new file. At step 312, the file name is inserted into the invalid list of the list file 38, following which processing flows to step 314. At step 314, the verification server 500 tags the file name just inserted, following which processing flows to step 400. At step 400, the verification server 500 verifies the file. In the present embodiment, the verification test comprises checking that the file size is greater than zero. In the event that the file size is zero, the verification test fails and processing flows from step 400 to step 402 and then step 330, which is discussed above. Alternatively, if the file size is greater than zero, the verification test is passed at step 402 and processing flows to step 316. At step 316 the file is loaded and processing flows to step 318. At step 318, the result of the file load is considered. If the file loaded successfully at step 316, then processing flows to step 320. In practise, the third embodiment detects that the file load was successful if the device 10 is still operational following the file load. At step 320, the file name is de-tagged and moved from the invalid list to the valid list. Processing then flows to step 516, wherein the verification server 500 responds to the OS system service which made the verification request at step 504 and confirms that the file has been loaded successfully. Alternatively, if at step 318 the file load is not successful then the device crashes and processing flows to step 322, following which processing returns to step 300 when the device reboots.
According to the above described operation, the verification server 500 can be used to verify each file loaded by the OS system services 200a-n. Alternatively, the verification server 500 can be used to verify only a subset of the files loaded by the OS system services 200a-n. In any case, if a file is corrupt and causes the device to crash then that file enters the invalid list. If the file is not corrupt then the OS system service 200a-n is either informed that it can load the file or informed that the verification server has already loaded the file. In subsequent boot-ups the verification server will prevent OS system services from loading files in the invalid list and will permit OS system services to load files in the valid list. According to this operation, continuous reboot cycling is automatically prevented.
It is to be understood that the verification server provides a means for identifying files to be loaded during a boot-up process of the device 10. The verification server also provides a means for determining if loading a file causes the device 10 to crash. The verification server also provides a means for updating the list file 38 to indicate whether loading a particular file causes the device 10 to crash. The verification server also provides a means for loading files during the boot-up process in dependence on the content of the list file 38.
In the event that an existing file is modified, the verification server detects this and ensures that the file name is re-inserted into the invalid list and tagged as new. If the unmodified version of the file was in the valid list then this entry is removed at the same time. Accordingly, the modified file is treated as a new file again and will only be moved to the valid list if it does not cause the device 10 to crash when the file is loaded.
It is an advantage of the third embodiment that any OS system service can use the verification server 500 to automatically determine if a file can be loaded or not. Accordingly, any file which needs to be loaded during boot-up can be run through the verification server. Additionally, all files which need to be loaded during boot-up can be run through the verification server. Stated differently, continuous reboot cycling resulting from any file loaded during boot-up is automatically prevented. Either a corrupt file is detected at verification step 318, or the corrupt file is loaded once, detected following a reboot at step 312, and never loaded again.
It is an advantage of the third embodiment that the number of times a file is written to in order to protect the device 10 from continuous reboot cycles is minimised. Accordingly, any boot-up time increase resulting from the above-described operation of the verification server is also minimised. In turn, this means that boot-up time is not prolonged unnecessarily which would degrade the user experience. In particular, the list file 38 is only written to at the beginning to position the name of each file in the correct list. Once all the file names are in the correct list, the verification server only reads from the list file 38 to establish which files can be loaded. Stated differently, the verification server does not have to write to the list file once the name of each file to be loaded during boot-up is positioned in the correct list. Accordingly, the verification server can automatically detect invalid files without having to perform any file writes.
In the third embodiment the non-volatile memory is a flash memory drive. A further advantage of the operation of the third embodiment is that excessive wear on the flash drive is reduced. In particular, excessive wear can occur if repeated writing operations are performed on the flash drive. As the operation of the third embodiment minimises the number of file writes necessary to automatically detect invalid files, the first embodiment also prolongs the life of the flash memory.
In the third embodiment, if the verification server identifies that a file is invalid (i.e. corrupt) it informs the OS system service not to load the file. In some other embodiments, the verification server could additionally or alternatively load a default file which corresponds to the invalid file. In particular, the loading of the file may be essential for the device 10 to enter an operational state. If this is the case, then simply instructing the corresponding OS system service not to load the file will prevent the device from entering an operational state. Accordingly, the verification server could store a number of old but valid copies of essential files so that in the event the current version is corrupt, the verification server can load the valid old version of the file. According to this operation, the device will then be able to enter an operational state. In some embodiments, the device could automatically detect that a current version of a file is invalid and automatically instruct a user of the device to obtain a current version of the file which is valid, for example, via an appropriate message on the display 16.
It is an advantage of the third embodiment that the list file 38 is created and updated automatically by the verification server. Moreover, it is not the responsibility of a user of the device to maintain the list file 38. This is an advantage as to maintain the list file 38 the user would require an intimate knowledge of the files which were loaded during boot-up. According to the third embodiment, the user can simply install new files onto the device and the verification server will automatically protect the device 10 from continuous reboot cycling if those files are loaded during boot-up and cause the device to crash.
In the third embodiment, the list file 38 comprised two lists, an invalid list and a valid list. However, in other embodiments, it would be equally valid for the font server to create and manage two list files, wherein one file contained the valid list and the other contained the invalid list. The list file could be a text file, a binary file, an XML file, or a file of any other file type.
In the third embodiment, when the verification server inserts a new file name into the list file the verification server tags that file name as new. The purpose of this is so that the verification server knows which file to move from the invalid list to the valid list in the event that a file load test is successful (step 318). In other embodiments, the verification server does not tag file names. However, in such embodiments the verification server needs to remember the file name of the current file being tested so that it knows which file name to move to the valid list if the file passes the loading test.
The third embodiment included the verification stage represented by steps 400 and 402. However, it is to be understood that in some other embodiments steps 400 and 402 could be omitted. Such embodiments would therefore correspond with the first embodiment described above.
The first, second and third embodiments have been discussed with reference to loading files during the system start-up stage (step 106) of the boot-up process 98. However, it is to be understood that some other embodiments of the invention could relate to different boot-up processes. Further, some other embodiments could relate to file loading which occurs at a different stage in the boot-up process. For example, some other embodiments may relate to file loading during the GUI and other application loading stage (i.e. step 108) of
The first, second and third embodiments have been discussed above with reference to files which either load successfully or crash the device. It is to be understood that some other embodiments could also operate with files which are corrupt but which do not crash the device. In such cases, the new tag relating to the file would be removed and the file name would remain in the invalid list. Alternatively, if file tagging was not performed then the file name would just be left in the invalid list.
In the first, second and third embodiments discussed above the list file 38 lists file names. However, it is to be understood that in other embodiments of the invention file representations other than names are used. For example, the list file 38 could list file locations or unique file identifiers. Alternatively, a code could be generated for each file and that code could be used as the representation stored in the list file. Furthermore, in the third embodiment the verification server has been discussed above with reference to receiving a single file representation with each verification request. In some other embodiments more than one file representation could be passed with a verification request. Any number of file representations could be passed with some verification requests.
Finally, various additions and modifications may be made to the above described embodiments to provide further embodiments, apparent to the intended reader being a person skilled in the art, any and all of which are intended to fall within the scope of the appended claims.
Wood, Ian, Hartman, Peter, Kren, David
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5974546, | May 08 1997 | Round Rock Research, LLC | Apparatus and method to determine cause of failed boot sequence to improve likelihood of successful subsequent boot attempt |
6189147, | Oct 13 1998 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Apparatus and method for an installation recovery system |
6230285, | Sep 08 1998 | CA, INC | Boot failure recovery |
6675295, | Jun 19 2000 | Microsoft Technology Licensing, LLC | Method and computer system for detecting and correcting a failure in a computer application program during startup |
6898731, | Jan 10 2002 | International Business Machines Corporation | System, method, and computer program product for preventing machine crashes due to hard errors in logically partitioned systems |
7734945, | Apr 29 2005 | Microsoft Technology Licensing, LLC | Automated recovery of unbootable systems |
8438423, | Mar 31 2009 | American Megatrends, Inc. | Invalid setup recovery |
8453015, | Jul 16 2007 | VALTRUS INNOVATIONS LIMITED | Memory allocation for crash dump |
20030131279, | |||
20080276239, | |||
EP1001339, | |||
WO2073379, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 25 2010 | Nokia Technologies Oy | (assignment on the face of the patent) | / | |||
Dec 02 2011 | HARTMAN, PETER | Nokia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027913 | /0083 | |
Dec 13 2011 | KREN, DAVID | Nokia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027913 | /0083 | |
Jan 03 2012 | WOOD, IAN | Nokia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027913 | /0083 | |
Jan 16 2015 | Nokia Corporation | Nokia Technologies Oy | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 035280 | /0093 | |
Jul 22 2017 | Nokia Technologies Oy | WSOU Investments, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 043953 | /0822 | |
Aug 22 2017 | WSOU Investments, LLC | OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 043966 | /0574 | |
May 16 2019 | WSOU Investments, LLC | BP FUNDING TRUST, SERIES SPL-VI | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 049235 | /0068 | |
May 16 2019 | OCO OPPORTUNITIES MASTER FUND, L P F K A OMEGA CREDIT OPPORTUNITIES MASTER FUND LP | WSOU Investments, LLC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 049246 | /0405 | |
May 28 2021 | TERRIER SSC, LLC | WSOU Investments, LLC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 056526 | /0093 | |
May 28 2021 | WSOU Investments, LLC | OT WSOU TERRIER HOLDINGS, LLC | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 056990 | /0081 |
Date | Maintenance Fee Events |
Nov 02 2015 | ASPN: Payor Number Assigned. |
Mar 04 2019 | REM: Maintenance Fee Reminder Mailed. |
Aug 19 2019 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jul 14 2018 | 4 years fee payment window open |
Jan 14 2019 | 6 months grace period start (w surcharge) |
Jul 14 2019 | patent expiry (for year 4) |
Jul 14 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 14 2022 | 8 years fee payment window open |
Jan 14 2023 | 6 months grace period start (w surcharge) |
Jul 14 2023 | patent expiry (for year 8) |
Jul 14 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 14 2026 | 12 years fee payment window open |
Jan 14 2027 | 6 months grace period start (w surcharge) |
Jul 14 2027 | patent expiry (for year 12) |
Jul 14 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |