Home
Device driver and adapter binding technique
Contents
1. The interrupt table 246 is an interrupt vectoring table made with the kernel 24 in normal UNIX operation The Virtual Interrupt Vector Table is shown below and represents information contained in the routine table INT_LEV SUB_LEV MAJ MIN PNTR UNIX DD INTR ROUTINE INT_LEV SUB__LEV Virtual Interrupt Identifier from MAJ MIN Identifier of UDD owining interrupt PNTR Pointer to UDD interrupt handling routine This table is not static built as part of the kernel build but is dynamically built at run time Each UNIX device driver must call the kernel function call to receive inter rupt sub level information while passing its major and 5 6 minor number as well as pointer to the interrupt han dler routine There is generally one table 30 similar to the UNIX system tables per device type etc ddi These tables contain device or device type specific information while etc master 26 and etc system 28 contain informa tion common to all devices The files containing device dependent information the descriptive data that is asso ciated with a particular device are as follows etc disk etc display etc diskette etc tape etc printer etc keyboard etc async etc locator Every UNIX device driver follows certain conven tions While there is the concept of a predefined IODN for some of the nucleus components of a virtual re source manager the majority of the device device man ager ta
2. 1 19 created in step 3 as indicated in FIG 4 at step 8 This causes in step 9 the UNIX device driver to use the IODN passed in step 7 to go to the virtual resource manager to bind to the virtual resource manager device driver corresponding to the same token and associated with the adapter port Other specific examples will readily suggest them selves to those skilled in the art and although the pre ferred embodiment of the invention has been described as using the UNIX operating system other operating systems having similar characteristics could be adapted for use in accordance with the teachings of the inven tion Therefore it will be understood by those skilled in the systems programming art that while the invention has been particularly shown and described with respect to a single preferred embodiment changes in form and detail may be made therein without departing from the spirit and scope of the invention Having thus describe our invention what we claim as new and desire to secure by Letters Patent is 1 A device driver and adapter binding technique in which an operating system having device drivers is run as a virtual machine on a virtual resource manager hav ing device drivers of real and virtual devices compris ing the steps of assigning a token to the virtual resource manager s device driver for the device to be bound to a device driver of said operating system creating a device dependent informa
3. of the Virtual Resource Manager VRM device driver model FIG 2 is a block and flow diagram of the relational structure of the virtual resource manager configuration VRMCONMF according to the present invention FIG 3 is a flow diagram showing the device driver and adapter binding technique according to the inven tion and FIG 4 is a block and flow diagram illustrating the scenario for device port binding for the specific exam ple of a printer 4 649 479 3 DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT OF THE INVENTION In the environment in which the invention is used the virtual resource manager consists of two basic types of components processes and interrupt handlers Pro cesses are scheduled for execution through a prioritized round robin algorithm Interrupt handlers are divided into two types First Level Interrupt Handlers FLIHs and Second Level Interrupt Handlers SLIHs There is only one FLIH per hardware interrupt level and one SLIH per adapter on each interrupt level Both pro cesses and interrupt handlers can be installed from a virtual machine Also processes and interrupt handlers can be created by processes within the virtual resource manager Basically anything a virtual machine can do with Virtual Machine Interface VMI Supervisory Calls SVCs a virtual resource manager can do with function calls to the virtual resource manager nucleus When components and devices are installed into the virtual
4. resource manager from a virtual machine the virtual machine supplies identifying Input Output Code Numbers IOCNs and identifying Input Output De vice Numbers IODNs The virtual resource manager generates IODNs for newly created instances of virtual devices Within the virtual resource manager compo nents and devices are known by encoded identifications IDs which are generated by the virtual resource man ager These IDs are unique and dynamic i e each time an IODN is defined by a virtual machine the internal device identification will be different even though the IODN is static Only programmers writting code for inside the virtual resource manager need be concerned with the internal identifications since they are not re flected above the virtual machine interface Referring now to FIG 1 of the drawings there is shown a model of the virtual resource manager device driver The virtual machine 10 is interfaced with the virtual resource manager driver 12 through a well de fined virtual machine interface 14 The virtual machine 10 issues calls to define device supervisory calls SVCs and to attach device supervisory calls as represented by block 16 and in response to those calls the virtual resource manager device driver 12 is initialized at block 122 and provides an virtual interrupt to the virtual ma chine 10 The virtual machine 10 also issues a call to start an input output supervisory call as represented by block 18 This ca
5. system configuration files etc master 26 and etc system 28 are modified Then in block 48 a token IODN is assigned to the device This is followed in block 50 with a re load operation and then in block 52 the device is defined to the virtual resource manager with modified adapter characteristics including passing the token number for the device Going now to block 54 the UNIX device driver is updated for device char acteristics including an identical token number for the device The UNIX application OPENS the UNIX device driver to use the device in block 56 This is fol lowed in block 58 by the UNIX device driver passing the device token number to the virtual resource man ager When the virtual resource manager receives the token number it passes a request to the associated vir tual resource manager device driver for the correspond ing token number as indicated in block 60 In block 62 the virtual resource manager device driver uses adapter characteristics and port number corresponding to the device token number to drive the device thus complet ing the device driver and and adpater binding Then 4 649 479 7 when the device is to be driven by an application the device which has been set up by the user is requested via the UNIX device driver and the virtual resource manager device driver as indicated in block 64 To provide a more concrete example for those skilled in the art of system programming and familiar with th
6. NG TO DEVICE TOKEN 10 DRIVE DEVICE 64 DEVICE SET UP BY USER DRIVEN BY APPLICATION REQUESTS UNIX 00 8 DD U S Patent 10 1987 Sheetiof4 4 649 479 FIG 10 VIRTUAL MACHINE SVC RETURN VIRTUAL INTERRUPT DEFINE DEVICE SVC ATTACH DEVICE SVC DEVICE DRIVER 2 1 0 OPERATION INTERRUPT 22 ADAPTER 20 U S Patent 10 1987 Sheet20f4 4 649 479 FIG 2 READ PROG CALL DEFINE_DEVICE DEFINE CODE SEND_SVC DEVICE DRIVER U S Patent Mar 10 1987 PHYSICAL PORT OF DEVICE CONNECTION SPECIFIED IN TABLE OF ADAPTER CHARACTERISTICS MODIFY UNIX SYSTEM CONFIGURATION FILES ETC MASTER ETC SYSTEM DEFINE DEVICE TO VRM WITH MODIFIED ADAPTER CHARACTERISTICS INCL PASSING TOKEN 1008 FOR DEVICE UPDATE UNIX DEVICE DRIVER FOR DEVICE CHARACTERISTICS INCLUDING IDENTICAL TOKEN FOR THE DEVICE Sheet 3 of 4 4 649 479 10 3 UNIX APPLICATION OPENS UNIX DEVICE DRIVER TO USE DEVICE UNIX DEVICE DRIVER PASSES DEVICE TOKEN TO VRM VRM PASSES REQUEST TO ASSOCIATED VRM 00 DEVICE DRIVER FOR CORRE SPONDING TOKEN OF CODE VRM DD USES ADAPTER CHARACTERISTICS PORT CORRESPONDING TO DEVICE TOKEN TO DRIVE DEVICE DEVICE SET UP BY USER DRIVEN BY APPLICATION REQUESTS VIA UNIX 00 8 VRM 00 4 649 479 Sheet 4
7. United States Patent Advani et al 54 DEVICE DRIVER AND ADAPTER BINDING TECHNIQUE 75 Inventors Hira Advani Larry Loucks Nancy L Springen all of Austin Tex 73 Assignee International Business Machines Corp Armonk N Y 21 Appl No 706 642 22 Filed Feb 28 1985 51 Int 06 9 00 1521 55561 364 300 58 Field of Search 364 300 56 References Cited U S PATENT DOCUMENTS 4 330 822 5 1982 Dodson 364 200 4 455 619 6 1984 Masui et al 364 900 4 456 954 6 1984 4 475 156 10 1984 Bullions III et al Federico et al 4 485 439 11 1984 Rothstein 364 200 4 493 034 1 1985 Angelle et al 364 200 4 494 188 1 1985 Nakane et 364 200 Primary Examiner Raulfe B Zache USER MODIFIES DEVICE CONFIGURATION PHYSICAL PORT OF DEVICE CONNECTION SPECIFIED IN TABLE OF ADAPTER CHARACTERISTICS MODIFY UNIX SYSTEM CONFIGURATION FILES JETC MASTER ETC SYSTEM RE IPL RE LOAD DEFINE DEVICE VRM WITH MODIFIED ADAPTER CHARACTERISTICS INCL PASSING TOKEN 1008 FOR DEVICE UPDATE UNIX DEVICE DRIVER FOR DEVICE CHARACTERISTICS INCLUDING IDENTICAL TOKEN FOR THE DEVICE 4 649 479 Mar 10 1987 Patent Number Date of Patent 11 45 Attorney Agent or Firm C Lamont Whitham James H Bark
8. e UNIX operating system reference is now made to FIG 4 In this example a line printer 70 identified as LPT9 is to be attached to an RS232 serial adapter 72 having four ports identified by the tokens IODNI IODN2 IODN3 and IODN4 The first step is to modify the etc system file 28 and the etc master file 26 In these tables the parameters for the LPT9 printer are entered as major number 9 and DDI etc printers The etc master file 26 contains all supported devices irre spective of their configuration In the etc system file 28 there is one entry per adapter device i e per UNIX device driver In step 2 the DDI device dependent information file may be modified for device or adpater parameters Then in step 3 the character special file is created for the line printer LPT9 This is followed in step 4 with the initial program load IPL sequence to execute the VRMCONFIG progam In step 5 the VRMCONFIG program passes device dependent information to the configuration CONFIG pseudo device driver In step 6 the CONFIG device driver makes known the virtual resource manager device driver code to the virtual resource manager along with the token IODN In step 7 the CONFIG device driver passes some device information to the UNIX device driver along with the same token IODN which is stored in the table area of the UNIX device driver At this point an application program can OPEN the special file
9. e manager can be thought of as a sophisticated hardware interface analogous to the BIOS Basic In put Output System which is a relatively simple hard ware interface According to the invention a token Input Out put Device Number IODN corresponding to the device is placed in the UNIX device driver At the program initiation time Initial Program Load or IPL this token is used to define to the virtual resource man ager the device with adapter dependent information which includes a hardware port address for the physical device A special file corresponding to the device has been created When this special file is opened the UNIX device driver retrieves the token for the device and attaches to the virtual resource manager This causes the virtual resource manager device driver to use the adapter dependent information corresponding to the token and placed in the process stack Thus when the UNIX device driver is opened to drive a device it uses this token passed to it to communicate with the virtual resource manager device driver thereby accom plishing driver to driver binding As a result this bur den is eliminated from the writer of the device driver programs BRIEF DESCRIPTION OF THE DRAWINGS The foregoing and other objects aspects and advan tages of the invention will be better understood from the following detailed description with reference to the drawings in which FIG 1 is a block and flow diagram
10. following steps passing said token from said operating system de vice driver to said virtual resource manager retrieving the device dependent information from the associated virtual resource manager device driver corresponding to said token and using said device dependent information to drive the device 4 A method of linking device drivers of an operating system run as a virtual machine on a virtual resource manager with the device drivers of said virtual resource manager comprising the steps of specifying the port number of a device connection in a table of adapter characteristics modifying the operating system configuration files and assigning a token number to said device reloading said operating system to define said device to said virtual resource manager with adapter char acteristics and passing said token number to an associated device driver of said virtual resource manager opening the device driver of said operating system to use said device passing said token number from said device driver to said virtual resource manager retrieving the device dependent information from the associated virtual resource manager device driver corresponding to said token number and using said device dependent information to drive said device thereby linking the device drivers of said operating system and said virtual resource man ager 5 The method recited in claim 4 wherein a user may modify a device configu
11. gs IODNs will vary in assignment Only the nucleus virtual resource manager components are al lowed to default always to a specific IODN Therefore UNIX device drivers are not allowed to have hard code device dependent information Each UDD writer will have a table entry for each IODN it con trols If the UDD is a multiplexing device driver i e deals with more than one IODN the table must reflect this situation An example of this is a UDD for control ling printers This UDD perhaps might control multiple printers The defined mechanism for handling this is the UNIX major device number which reflects the Printer UDD and the minor number which reflects the specific printer Therefore the size of the UDD table is directly proportional to the number of minor devices Using CONF C this major minor number combination is the mechanism by which the correct table entry in the asso ciated UDD is updated Turning now to FIG 3 the flow chart for the device driver and adapter binding according to the invention is shown In block 40 it is assumed that the user modifies the device configuration To do this the physical port number of the device connection must be specified in the table of adapter characteristics as indicated in block 5 42 Then if the device is a new device the flow pro 50 55 60 65 gresses to block 46 otherwise the flow progresses to block 54 as indicated by the decision block 44 In block 46 the UNIX
12. issues a system command to the file dev Ip for device line printer While the procedure is convenient for the applications programmer the UNIX operating system programmer must write device driver programs so that 20 25 35 40 45 50 55 60 65 2 the physical devices can communicate with the operat ing system SUMMARY OF THE INVENTION In order to support a more dynamic system environ ment for UNIX as a Virtual Machine VM running on a Virtual Resource Manager VRM certain linkages must be made between the UNIX device drivers and the corresponding real and virtual devices in the virtual resource manager By virtual resource manager what is meant is that part of a virtual machine operating system which manages the resources that are connected to the computer as will be understood by those skilled in the systems programming art Again reference may be had to the text books by Deitel and Lorin and Deitel men tioned above It is therefore an object of the present invention to provide a scheme for dynamically binding the UNIX device drivers to the virtual resource manager device drivers This binding capability enables a programmer writing an interrupt handler for a new adapter being installed into the system to utilize and move devices on an adapter with minimal effort and not to have devices wired to a specific port In the environment to be described in more detail hereinafter the virtual re sourc
13. namic system environment for UNIX as a virtual machine running on a virtual resource man ager the present invention provides certain linkages between the UNIX device drivers and the correspond ing real and virtual devices in the virtual resource man ager This linkage mechanism consists primarily of a convention by which both real and virtual devices are identified by a device number referred to as the IODN as described above In order to bind the UNIX device drivers to the corresponding virtual resource manager components a mechanism is provided to communicate the IODN along with other information to the UNIX device driver as part of the normal UNIX initialization The virtual resource manager configuration relational structure for UNIX is shown in FIG 2 The CONFIG DD subcomponent 242 of VRMCONF is itself a device driver inside the UNIX kernel 24 As such it is the part of VRMCONF which issues the virtual resource manager supervisory calls It also is the mechanism by which the IODN and other information gets passed to the respective kernel device drivers It passes this information via a kernel function call The function call is initiated via the CFDDRU input output control issued to the CONFIG DD The internal call ie CONFIG DD to kernel is of the fol lowing format fp gt d_init device iodn ilev ddlen ddptr where the parameters are device dev_with the major minor device numbers iodn
14. ng systems which have characteristics similar to the UNIX operat ing system UNIX is a trademark of Bell Telephone Laboratories Inc which developed the operating sys tem It was originally developed for use on a DEC minicomputer but has become a popular operating sys tem for a wide range of mini and microcomputers One reason for this popularity is that UNIX is written in C language also developed at Bell Telephone Laborato ries rather than in assembly language so that it is not processor specific Thus compilers written for various machines to give them C capability make it possible to transport the UNIX operating system from one machine to another Therefore application programs written for the UNIX operating system environment are also porta ble from one machine to another For more information on the UNIX operating system the reader is referred to UNIX System Users Manual System published by Western Electric Co January 1983 A good over view of the UNIX operating system is provided by Brian W Kernighan and Rob Pike in their book entitled The UNIX Programming Environment published by Prentice Hall 1984 Physical devices such as printers modems and the like which are supported by the UNIX operating sys tem appear as an entry in the dev for device direc tory Application programs running on UNIX handle devices as if they were files To send characters to a line printer for example the application program
15. nning as Virtual Machines VM on a Virtual Resource Manager VRM and more par ticularly to a technique for binding the device drivers of an operating system to the corresponding real and virtual devices of the virtual resource manager PRIOR ART Virtual machine operating systems are known in the prior art which make a single real machine appear to be several machines These machines can be very similar to the real machine on which they are run or they can be very different While many virtual machine operating systems have been developed perhaps the most widely used is VM 370 which runs on the IBM System 370 The VM 370 operating system creates the illusion that each of several users operating from terminals has a complete System 370 Moreover each user can use a different operating system running under VM 370 For further background the reader is referred to the text book by Harvey M Deitel entitled An Introduction to Operating Systems published by Addison Wesley 1984 and in particular to Chapter 22 entitled Virtual Machine Operating System A more in depth discussion may be had by referring to the text book by Harold Lorin and Harvey M Deitel entitled Operating Systems published by Addison Wesley 1981 and in particular to Chapter 16 entitled Virtual Machines The invention to be described hereinafter is primarily intended for use with the UNIX operating system but may have application with other operati
16. of 4 U S Patent Mar 10 1987 614 71 0 5512084 9 4315 180011 251 11 YLYdA INDOT INGOT 0 330 18 15 18201 3002 330 00 9130 0 1 01 4 _ AE TAI S 18001 1 TAT INT 251 Tv 7 NAdOXX 00 NUX WO p 4315 56538009 1804 1011 8 91 8 5118 4140 101383 IN AYOWIN 09 ONYdXJ 55380014 9811104 50334 3311 lt ASYN ONITIOd 0334 WX04 TANNVHO WING 081 038 14088311 19914 JWYN 301820 WYA 1431 31340 1 0 13138 80883 100 80883 NO 10201084 ANI S118 318 anya 26658 1184 41 3113 WHA 41 3WWN 000 2 SUSLNIYd 213 100 XX 13380 6 NOLLVYNDIINOD 618 30 313 193453881 5321430 031804405 11 SNIVINOD 1 93157 213 54 1 8 213 100 XX 313384 6 30 6141 321830 8314 0 39 INO 315 5 213 13 80 321130 XINA 838 21 13100 1 9315 6141 30 8340 8 4315 58081481 6 6191 30 0 64315 l 3714 NOLLVAYOINI 183083430 321334 24315 913 4 649 479 1 DEVICE DRIVER AND ADAPTER BINDING TECHNIQUE TECHNICAL FIELD The present invention generally relates to computer operating systems ru
17. oftware vectoring tables The table 244 is used by the kernel to locate each device driver major number and the routines that driver supports It is a binding table which identifies each major device number and relates that driver to a set of system calls For example the UNIX system OPEN dev devicel would be indexed through the CONF C table to find the UNIX device driver to pass the call to as well as the specific routine to run as the result of the OPEN system call This continues to be true in the virtual resource manager environment In addition the normal use of this table is extended to contain pointers to the UNIX Device Driver UDD tables contained within the device drivers in which the IODN and device depen dent information are written during UNIX initialization as indicated in FIG 2 The UNIX device driver table structure is shown below Status Flags IODN INT_LEV SUB_LEV LL Status one entry per major minor tabie entry IODN 2 byte integer tag by which the UDD knows its corresponding VRM component one entry per major minor combination value 0 15 of virtual interrupt level SUB__LEV value 0 255 interrupt sub level value assigned at ATTACH time LL 2 byte integer length of the device dependent information Device Dep Info Thus the type of information in CONF C does not change Additional binding information is added to provide pointers into UDD data areas
18. rameters that must be contained in the DDS deyice characteristics section in response to a change characteristics operation A device is initialized by the virtual resource man ager by calling the Start Device routine This occurs automatically each time a virtual machine 10 attaches a device The device driver s initialization routine is called at this time to enable initialize the device s adapter By not initializing the device until it is attached saves system resources and allows a more flexible use of hardware resources For example two devices that do not support interrupt sharing could use the same inter rupt level if they are not both active A device is termi nated by the virtual resource manager by calling the Start Device routine with the stop option The device driver s termination routine is called at this time to disable the device s adapter This allows the device to be allocated to a co processor or resources used by the device to be allocated to other devices UNIX device drivers in a non virtual resource man ager environment interface directly to the system hard ware To support the adding and or deleting of devices and the building of a new UNIX kernel several UNIX system files exist These files fall into two categories those required to make the UNIX kernel system tables and those that are constructed as the result of making a new kernel binding tables In order to support a more dy
19. ration further comprising the step of updating the device driver of said operating system for the device characteristics including the iden tical token number for the device if the device is not a new device
20. sdale John L Jackson 57 ABSTRACT An operating system in a digital computer environment is run as a virtual machine on a virtual resource man ager In order to provide a more dynamic environment for the operating system linkages are made between the operating system device drivers and the corresponding real and virtual devices of the virtual resource manager This is accomplished by assigning a token to the virtual resource manager A device dependent informa tion file corresponding to the device is created This file contains adapter dependent information including a hardward port address for the physical device The token is placed in the operating system device driver at the time it is initiated When the operating system device driver is opened to drive the device it uses the token to communicate with the virtual resource man ager device driver thereby accomplishing driver to driver binding This causes the virtual resource man ager device driver to use the adapter dependent infor mation in the special file corresponding to the token and placed in the process stack 5 Claims 4 Drawing Figures UNIX APPLICATION OPENS UNIX DEVICE DRIVER 10 USE DEVICE UNIX DEVICE DRIVER PASSES DEVICE TOKEN 10 VRM 60 PASSES REQUEST 10 ASSOCIATED 00 DEVICE DRIVER FOR CORRE SPONDING TOKEN OF CODE 62 VAR 00 USES ADAPTER CHARACTERISTICS PORT w CORRESPONDI
21. the iodn to use for this device or 0 if not applicable ipri virtual interrupt level ddlen the length of the device dependent information or 0 if none ddptr a pointer to the device dependent information or 0 if none 4 649 479 5 There two key tables used in making the UNIX kernel These are etc master 26 and etc system 28 alias usr sys cf dfile std The etc master 26 is an ASCII text file containing information about every device the system is capable of supporting There is at least one entry in this file for every real device In the virtual resource manager environment the same is still true but in addition there must be at least one entry for every virtual device device manager The etc system file 28 is also an ASCII text file It contains information about every device driver on the UNIX file system There is at least one entry in this file for each device driver In the UNIX environment there are both real and pseudo device drivers A pseudo device driver has no real or virtual device associated with it Pseudo device drivers is one way to gain access to the VMI Entries for these pseudo device drivers are required in the etc system file 28 in the virtual resource manager environment At least two tables are created as part of the UNIX kernel build operation One is known as 244 and the other as interrupt table 246 These are part of the UNIX kernel 24 and are s
22. tion file in said operating system corresponding to said device to ur 20 25 35 40 45 55 60 65 8 be bound said file including adapter dependent information for said device placing said token in a device driver of said operat ing system at the time said operating system is initiated and using said token placed in said device driver of said operating system to communicate with the corre sponding virtual resource manager device driver when said device driver of said operating system is opened to drive said device thereby binding the two drivers and using the device dependent infor mation in said device dependent information file to drive the physical device 2 A device driver and adapter binding technique as recited in claim 1 wherein a user may modify a device configuration said technique further comprising the steps of specifying the port number of the device connection in a table of adapter characteristics and updating the device driver of said operating system for device characteristics including said token for the device if the device is not a new device before using said token when said device driver of said operating system is opened otherwise repeating said steps of assigning creating and placing if the device is a new device 3 A device driver and adapter binding technique as recited in claim 1 wherein the step of using said token is performed with the
23. uses the virtual resource manager de vice driver 12 to check device parameters in block 126 and provide a return to the start input output supervi sory call block 18 which then causes the virtual re source manager device driver 12 to initiate input out put in block 124 and provide a virtual interrupt to the virtual machine 10 A virtual interrupt to the virtual machine 10 is also provided by the SLIH 128 The adpater 20 provides interrupts to the virtual resource manager device driver 12 and responds to input output operation commands from the device driver 12 via the hardware interface 22 A device is defined at virtual resource manager initial program load time for virtual resource manager devices or when the operating system issues the appropriate Define Device SVC The device driver s define de vice routine is called at this time to disable the device s adapter interrupts DMA and the like The data passed to this routine is the Define Device Structure DDS specified with the Define Device SVC The 0 20 25 30 35 40 45 50 65 4 DDS which is passed to the device driver s define de vice routine contains a device dependent area that pro vides the means by which the operating system can pass configuration information to the device driver The define routine is responsible for copying this structure into its static data area and returning its address Each device driver will define the pa
Download Pdf Manuals
Related Search
Related Contents
GE Sensing & Inspection Technologies Ultrasons USM Go Manuel Series P300 - Ultimate Washer 改正「労働安全衛生規則」が施行されます 改正 The UBC OSI Distributed Application Programming Environment 1 シルバー精工 紙折り機 Oruman MA40 取扱説明書 Trade Interceptor Charting 4.0 User Manual UTD2000 3000共用英文说明书20120823.cdr Xerox WorkCentre PE120i User's Manual : Free Download, Borrow, and Streaming : Internet Archive Copyright © All rights reserved.
Failed to retrieve file