# US 12,182,585 B2 · Computer system executing multiple operating systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,585 B2
- Document ID: US12182585B2
- Status: Granted
- Kind: B2
- Application number: 18/031,733
- Filed: 2021-10-28
- Published: 2024-01-04
- Granted: 2024-12-31
- Earliest claimed: 2020-10-29
- Assignees: Jolla Oy
- Applicants: Jolla Ltd.
- Inventors: Franz-Josef Haider; Marko Saukko
- Web page: https://patentgrep.com/patent/US12182585B2

## CPC

- G06F 9/441: {Multiboot arrangements, i.e. selecting an operating system to be loaded}
- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 9/541: {via adapters, e.g. between incompatible applications}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A first operating system and a second operating system are executed by a processor of a computing device. The first operating system has a first user space on which a first user space driver is executed. The second operating system has a second user space on which a second user space driver is executed. A common kernel driver is executed on a common kernel to determine which user space driver made a given function call to the common kernel driver and translate the given function call into a corresponding hardware-specific call, based on said determination. The common kernel driver enables the first user space driver and the second user space driver to access computer hardware of the computing device simultaneously.

## Claims

### Claim 1

A computing device comprising:
a memory having computer-executable instructions stored thereon; and
a processor coupled to the memory, wherein the computer-executable instructions, when executed on the processor, cause the processor to:
execute a first operating system and a second operating system having a first user space and a second user space, respectively, wherein the first operating system and the second operating system have a common kernel that is shared therebetween;
execute a first user space driver and a second user space driver on the first user space and the second user space, respectively; and
execute a common kernel driver on the common kernel to:
determine which one of the first user space driver and the second user space driver made a given function call to the common kernel driver; and
translate the given function call into a corresponding hardware-specific call, based on a determination of the one of the first user space driver and the second user space driver that made the given function call to the common kernel driver, thereby enabling the one of the first user space driver and the second user space driver to access computer hardware of the computing device,
wherein the common kernel driver enables the first user space driver and the second user space driver to access the computer hardware simultaneously.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the first operating system and the second operating system are existing operating systems, the common kernel driver being generated by merging a functionality of a first kernel driver with a functionality of a second kernel driver, wherein the first kernel driver and the second kernel driver are existing kernel drivers that are otherwise known to be used in the first operating system and the second operating system, respectively.

### Claim 3 (depends on 2)

The computing device of claim 2, wherein the common kernel driver is generated by modifying the first kernel driver to include the functionality of the second kernel driver.

### Claim 4 (depends on 2)

The computing device of claim 2, wherein the functionality of the first kernel driver is merged with the functionality of the second kernel driver at a level of calling conventions known to be used in function calls made in the first kernel driver and the second kernel driver.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein the computer-executable instructions, when executed, cause the processor to employ a handler of the common kernel driver to determine which one of the first user space driver and the second user space driver made the given function call to the common kernel driver, based on differences in attributes of a first parameter and attributes of a second parameter, when the first user space driver and the second user space driver access the common kernel driver via a same path, wherein the first parameter and the second parameter are passed by the first user space driver and the second user space driver, respectively, to the common kernel driver.

### Claim 6 (depends on 5)

The computing device of claim 5, wherein the attributes of the first parameter and the attributes of the second parameter comprise at least one of: a data size, a data type, a data order.

### Claim 7 (depends on 1)

The computing device of claim 1, wherein the computer-executable instructions, when executed, cause the processor to employ a handler of the common kernel driver to determine which one of the first user space driver and the second user space driver made the given function call to the common kernel driver, based on at least one symbolic link or a bind mount provided in a given path, when the first user space driver and the second user space driver access the common kernel driver via a first path and a second path, respectively.

### Claim 8 (depends on 1)

The computing device of claim 1, wherein the computer-executable instructions, when executed, cause the processor to employ a handler of the common kernel driver to determine which one of the first user space driver and the second user space driver made the given function call to the common kernel driver, based on a difference between a first driver configuration and a second driver configuration employed by the first user space driver and the second user space driver, respectively.

### Claim 9

A method comprising:
executing a first operating system and a second operating system having a first user space and a second user space, respectively on a computing device, wherein the first operating system and the second operating system have a common kernel that is shared therebetween;
executing a first user space driver and a second user space driver on the first user space and the second user space, respectively; and
executing a common kernel driver on the common kernel to:
determine which one of the first user space driver and the second user space driver made a given function call to the common kernel driver; and
translate the given function call into a corresponding hardware-specific call, based on a determination of the one of the first user space driver and the second user space driver that made the given function call to the common kernel driver, thereby enabling the one of the first user space driver and the second user space driver to access computer hardware of the computing device,
wherein the common kernel driver enables the first user space driver and the second user space driver to access the computer hardware simultaneously.

### Claim 10 (depends on 9)

The method of claim 9, wherein the first operating system and the second operating system are existing operating systems, the common kernel driver being generated by merging a functionality of a first kernel driver with a functionality of a second kernel driver, wherein the first kernel driver and the second kernel driver are existing kernel drivers that are otherwise known to be used in the first operating system and the second operating system, respectively.

### Claim 11 (depends on 10)

The method of claim 10, wherein the common kernel driver is generated by modifying the first kernel driver to include the functionality of the second kernel driver.

### Claim 12 (depends on 10)

The method of claim 10, wherein the functionality of the first kernel driver is merged with the functionality of the second kernel driver at a level of calling conventions known to be used in function calls made in the first kernel driver and the second kernel driver.

### Claim 13 (depends on 9)

The method of claim 9, further comprising employing a handler of the common kernel driver to determine which one of the first user space driver and the second user space driver made the given function call to the common kernel driver, based on differences in attributes of a first parameter and attributes of a second parameter, when the first user space driver and the second user space driver access the common kernel driver via a same path, wherein the first parameter and the second parameter are passed by the first user space driver and the second user space driver, respectively, to the common kernel driver.

### Claim 14 (depends on 13)

The method of claim 13, wherein the attributes of the first parameter and the attributes of the second parameter comprise at least one of: a data size, a data type, a data order.

### Claim 15 (depends on 9)

The method of any of claim 9, further comprising employing a handler of the common kernel driver to determine which one of the first user space driver and the second user space driver made the given function call to the common kernel driver, based on at least one symbolic link or a bind mount provided in a given path, when the first user space driver and the second user space driver access the common kernel driver via a first path and a second path, respectively.

### Claim 16 (depends on 9)

The method of claim 9, further comprising employing a handler of the common kernel driver to determine which one of the first user space driver and the second user space driver made the given function call to the common kernel driver, based on a difference between a first driver configuration and a second driver configuration employed by the first user space driver and the second user space driver, respectively.
