Management of memory, hardware and associated device drivers using stacks
AssigneeMarvell Luternational Ltd.
InventorJoachim Schmalz
Life of this patent
Estimating the term…
Abstract
Managing memory allocations and de-allocations with a stack, and managing hardware initializations and de-initializations with another stack. A stack may store de-allocate information. Another stack may store de-initialization information. The techniques may be applied to allocating/de-allocating memory for parts of a device driver, initializing/de-initializing parts of hardware, and initializing/de-initializing parts of software.
Claims102
A method comprising:
- first allocating a first portion of a device driver to a first location of a first memory;
- if said first allocating is successful, storing first de-allocate information of the first location of the first memory to a stack;
- second allocating a second portion of the device driver to a first location of a second memory different than the first memory;
- if said second allocating is successful, storing second de-allocate information of the first location of the second memory to the stack;
- and
- if said second allocating is not successful, de-allocating the first location of the first memory using the first de-allocate information in the stack.
A method comprising:
- allocating locations in a plurality of memory types to store portions of a device driver;
- storing de-allocate information for each successfully-allocated memory location in a stack;
- and
- if an allocation is not successful, de-allocating a previously-successful allocated memory location by using de-allocate information in the stack.
A method of de-allocating a plurality of memory locations, the method comprising:
- retrieving a first de-allocate information block from a stack;
- de-allocating a location in a first memory specified by the first de-allocate information block;
- retrieving a second de-allocate information block from the stack;
- and
- de-allocating a location in a second memory specified by the second de-allocate information block.
A method comprising:
- initializing a plurality of hardware parts;
- storing de-initialize information for each successfully-initialized hardware part in a stack;
- and
- if an initialization is not successful, de-initializing a previously-successful initialized hardware part by using the de-initialize information in the stack.
A method comprising:
- allocating a plurality of locations in a memory for a plurality of software parts;
- storing de-allocate information for each successfully-allocated memory location for a software part in a stack;
- and
- if an allocation is not successful, de-allocating a previously-successful allocated memory location for a software part by using de-allocate information in the stack.
A method comprising:
- allocating a location in a memory for a free buffer;
- storing first de-allocate information for the allocated memory location of the free buffer in a first stack;
- storing data in the free buffer and using the first de-allocate information to de-allocate the memory location of the free buffer;
- and
- storing second de-allocate information for the memory location of a used buffer in a second stack.
A computer program encoded in a computer-readable medium, which when executed by a computer, performs steps of:
- first allocating a first portion of a device driver to a first location of a first memory;
- if said first allocating is successful, storing first de-allocate information of the first location of the first memory to a stack;
- second allocating a second portion of the device driver to a first location of a second memory different than the first memory;
- if said second allocating is successful, storing second de-allocate information of the first location of the second memory to the stack;
- and
- if said second allocating is not successful, de-allocating the first location of the first memory using the first de-allocate information in the stack.
A computer program encoded in a computer-readable medium, which when executed by a computer, performs steps of:
- allocating locations in a plurality of memory types to store portions of a device driver;
- storing de-allocate information for each successfully-allocated memory location in a stack;
- and
- if an allocation is not successful, de-allocating a previously-successful allocated memory location by using de-allocate information in the stack.
A computer program encoded in a computer-readable medium, which when executed by a computer, performs steps of:
- retrieving a first de-allocate information block from a stack;
- de-allocating a location in a first memory specified by the first de-allocate information block;
- retrieving a second de-allocate information block from the stack;
- and
- de-allocating a location in a second memory specified by the second de-allocate information block.
A computer program encoded in a computer-readable medium, which when executed by a computer, performs steps of:
- initializing a plurality of hardware parts;
- storing de-initialize information for each successfully-initialized hardware part in a stack;
- and
- if an initialization is not successful, de-initializing a previously-successful initialized hardware part by using the de-initialize information in the stack.
A computer program encoded in a computer-readable medium, which when executed by a computer, performs steps of:
- allocating a plurality of locations in a memory for a plurality of software parts;
- storing de-allocate information for each successfully-allocated memory location for a software part in a stack;
- and
- if an allocation is not successful, de-allocation a previously-successful allocated memory location for a software part by using de-allocate information in the stack.
A computer program encoded in a computer-readable medium, which when executed by a computer, performs steps of:
- allocating a location in a memory for a free buffer;
- storing first de-allocate information for the allocated memory location of the free buffer in a first stack;
- storing data in the free buffer and using the first de-allocate information to de-allocate the memory location of the free buffer;
- and
- storing second de-allocate information for the memory location of a used buffer in a second stack.
A system comprising:
- a first memory;
- a second memory;
- a stack;
- and
- a controller operable to perform:
- first allocating a first portion of a device driver to a first location of the first memory;
- if said first allocating is successful, storing first de-allocate information of the first location of the first memory to the stack;
- second allocating a second portion of the device driver to a first location of the second memory different than the first memory;
- if said second allocating is successful, storing second de-allocate information of the first location of the second memory to the stack;
- and
- if said second allocating is not successful, de-allocating the first location of the first memory using the first de-allocate information in the stack.
A system comprising:
- a stack;
- and
- a controller operable to (a) allocate locations in a plurality of memory types to store portions of a device driver;
- (b) store de-allocate information for each successfully-allocated memory location in the stack;
- and (c) if an allocation is not successful, de-allocate a previously-successful allocated memory location by using de-allocate information in the stack.
A system comprising:
- a stack;
- and
- a controller operable to (a) retrieve a first de-allocate information block from the stack;
- (b) de-allocate a location in a first memory specified by the first de-allocate information block;
- (c) retrieve a second de-allocate information block from the stack;
- and (d) de-allocate a location in a second memory specified by the second de-allocate information block.
A system comprising:
- a first hardware part;
- a second hardware part;
- a stack;
- and
- a controller operable to (a) initialize the first and second hardware parts, (b) store a first de-initialize information block and a second de-initialize information block in the stack, and (c) if an initialization of the second hardware part is not successful, de-initializing the previously-successful initialized first hardware part by using the first de-initialize information block in the stack.
A system comprising:
- a memory;
- a first software part;
- a second software part;
- a stack;
- and
- a controller operable to (a) allocate locations in the memory for the first and second software parts, (b) store a first de-allocate information block and a second de-allocate information block in the stack, and (c) if an allocation of the second software part is not successful, de-allocate the previously-successful allocated first software part by using the first de-allocate information block in the stack.
A system comprising:
- a memory;
- a first stack;
- a second stack;
- and
- a controller operable to (a) allocate a location in the memory for a free buffer;
- (b) store first de-allocate information for the allocated memory location of the free buffer in the first-stack;
- (c) store data in the free buffer and use the first de-allocate information to de-allocate the memory location of the free buffer;
- and (d) store second de-allocate information for the memory location of a used buffer in the second stack.
A system comprising:
- a first memory means;
- a second memory means;
- a de-allocate information storing means;
- and
- a controlling means operable to perform:
- first allocating a first portion of a device driver to a first location of the first memory means;
- if said first allocating is successful, storing first de-allocate information of the first location of the first memory means to the de-allocate information storing means;
- second allocating a second portion of the device driver to a first location of the second memory means different than the first memory means;
- if said second allocating is successful, storing second de-allocate information of the first location of the second memory means to the de-allocate information storing means;
- and
- if said second allocating is not successful, de-allocating the first location of the first memory means using the first de-allocate information in the de-allocate information storing means.
A system comprising:
- a stacking means for storing de-allocate information;
- and
- a controlling means operable to (a) allocate locations in a plurality of memory means to store portions of a device driver;
- (b) store de-allocate information for each successfully-allocated memory location in the stacking means;
- and (c) if an allocation is not successful, de-allocate a previously-successful allocated memory location by using de-allocate information in the stacking means.
A system comprising:
- a stacking means for storing de-allocate information blocks;
- and
- a controlling means operable to (a) retrieve a first de-allocate information block from the stacking means;
- (b) de-allocate a location in a first memory means specified by the first de-allocate information block;
- (c) retrieve a second de-allocate information block from the stacking means;
- and (d) de-allocate a location in a second memory means specified by the second de-allocate information block.
A system comprising:
- a first hardware means for performing a first peripheral function;
- a second hardware means for performing a second peripheral function;
- a stacking means for storing de-initialize information;
- and
- a controlling means operable to (a) initialize the first and second hardware means, (b) store a first de-initialize information block and a second de-initialize information block in the stacking means, and (c) if an initialization of the second hardware means is not successful, de-initializing the previously-successful initialized first hardware means by using the first de-initialize information block in the stacking means.
A system comprising:
- a memory means;
- a first software means for performing a first function;
- a second software means for performing a second function;
- a stacking means for storing de-allocation information;
- and
- a controlling means operable to (a) allocate locations in the memory for the first and second software means, (b) store a first de-allocate information block and a second de-allocate information block in the stacking means, and (c) if an allocation of the second software means is not successful, de-allocate the previously-successful allocated first software means by using the first de-allocate information block in the stacking means.
A system comprising:
- a memory means;
- a first stack for storing de-allocate information;
- a second stack for storing de-allocate information;
- and
- a controlling means operable to (a) allocate a location in the memory means for a free buffer;
- (b) store first de-allocate information for the allocated memory location of the free buffer in the first stacking means;
- (c) store data in the free buffer and use the first de-allocate information to de-allocate the memory location of the free buffer;
- and (d) store second de-allocate information for the memory location of a used buffer in the second stacking means.
Dependencies are inferred from the claim text.