mirror of
https://github.com/AmbiML/sparrow-kata-full.git
synced 2025-08-17 12:46:59 +00:00
sel4-sys: fix pointer mutability in syscall stubs
Change-Id: I2c3139f7c3fb0d0390970f0a388a8ee5bc692bd3 GitOrigin-RevId: ac3853a5ea171e9948aad70b036757ece1aea657
This commit is contained in:
parent
06f2d60e94
commit
0548098405
@ -167,12 +167,12 @@ class Type(object):
|
|||||||
name = "type_"
|
name = "type_"
|
||||||
return "%s: %s" % (name, translate_type(self.name))
|
return "%s: %s" % (name, translate_type(self.name))
|
||||||
|
|
||||||
def pointer(self):
|
def pointer(self, mutable):
|
||||||
"""
|
"""
|
||||||
Return a new Type class representing a pointer to this
|
Return a new Type class representing a pointer to this
|
||||||
object.
|
object.
|
||||||
"""
|
"""
|
||||||
return PointerType(self, self.wordsize)
|
return PointerType(self, self.wordsize, mutable)
|
||||||
|
|
||||||
def c_expression(self, var_name, word_num=0):
|
def c_expression(self, var_name, word_num=0):
|
||||||
"""
|
"""
|
||||||
@ -198,14 +198,18 @@ class PointerType(Type):
|
|||||||
A pointer to a standard type.
|
A pointer to a standard type.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, base_type, wordsize):
|
def __init__(self, base_type, wordsize, mutable):
|
||||||
Type.__init__(self, base_type.name, wordsize, wordsize)
|
Type.__init__(self, base_type.name, wordsize, wordsize)
|
||||||
self.base_type = base_type
|
self.base_type = base_type
|
||||||
|
self.mutable = mutable
|
||||||
|
|
||||||
def render_parameter_name(self, name):
|
def render_parameter_name(self, name):
|
||||||
if name == "type":
|
if name == "type":
|
||||||
name = "type_"
|
name = "type_"
|
||||||
|
if self.mutable:
|
||||||
return "%s: *mut %s" % (name, translate_type(self.name))
|
return "%s: *mut %s" % (name, translate_type(self.name))
|
||||||
|
else:
|
||||||
|
return "%s: *const %s" % (name, translate_type(self.name))
|
||||||
|
|
||||||
def c_expression(self, var_name, word_num=0):
|
def c_expression(self, var_name, word_num=0):
|
||||||
assert word_num == 0
|
assert word_num == 0
|
||||||
@ -466,10 +470,10 @@ def generate_param_list(input_params, output_params):
|
|||||||
if not param.type.pass_by_reference():
|
if not param.type.pass_by_reference():
|
||||||
params.append(param.type.render_parameter_name(param.name))
|
params.append(param.type.render_parameter_name(param.name))
|
||||||
else:
|
else:
|
||||||
params.append(param.type.pointer().render_parameter_name(param.name))
|
params.append(param.type.pointer(False).render_parameter_name(param.name))
|
||||||
for param in output_params:
|
for param in output_params:
|
||||||
if param.type.pass_by_reference():
|
if param.type.pass_by_reference():
|
||||||
params.append(param.type.pointer().render_parameter_name(param.name))
|
params.append(param.type.pointer(True).render_parameter_name(param.name))
|
||||||
|
|
||||||
return ", ".join(params)
|
return ", ".join(params)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user