mirror of
https://github.com/torvalds/linux.git
synced 2024-11-30 08:01:59 +00:00
xdrgen: XDR width for fixed-length opaque
The XDR width for a fixed-length opaque is the byte size of the opaque rounded up to the next XDR_UNIT, divided by XDR_UNIT. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
3f890755c8
commit
16c98ce04a
@ -21,6 +21,16 @@ pass_by_reference = set()
|
||||
|
||||
constants = {}
|
||||
|
||||
|
||||
def xdr_quadlen(val: str) -> int:
|
||||
"""Return integer XDR width of an XDR type"""
|
||||
if val in constants:
|
||||
octets = constants[val]
|
||||
else:
|
||||
octets = int(val)
|
||||
return int((octets + 3) / 4)
|
||||
|
||||
|
||||
symbolic_widths = {
|
||||
"void": ["XDR_void"],
|
||||
"bool": ["XDR_bool"],
|
||||
@ -117,6 +127,18 @@ class _XdrFixedLengthOpaque(_XdrDeclaration):
|
||||
size: str
|
||||
template: str = "fixed_length_opaque"
|
||||
|
||||
def max_width(self) -> int:
|
||||
"""Return width of type in XDR_UNITS"""
|
||||
return xdr_quadlen(self.size)
|
||||
|
||||
def symbolic_width(self) -> List:
|
||||
"""Return list containing XDR width of type's components"""
|
||||
return ["XDR_QUADLEN(" + self.size + ")"]
|
||||
|
||||
def __post_init__(self):
|
||||
max_widths[self.name] = self.max_width()
|
||||
symbolic_widths[self.name] = self.symbolic_width()
|
||||
|
||||
|
||||
@dataclass
|
||||
class _XdrVariableLengthOpaque(_XdrDeclaration):
|
||||
|
Loading…
Reference in New Issue
Block a user