Compare commits
3 Commits
984d8b143e
...
9e12531651
Author | SHA1 | Date |
---|---|---|
|
9e12531651 | |
|
3b91819a4b | |
|
ee341fa739 |
19
RELEASES.md
19
RELEASES.md
|
@ -1,5 +1,24 @@
|
||||||
# Releases
|
# Releases
|
||||||
|
|
||||||
|
## AcadiaOS 0.1.1 (WIP)
|
||||||
|
|
||||||
|
### Denali
|
||||||
|
|
||||||
|
- AHCI Driver can use more than one command slot.
|
||||||
|
- Resets AHCI Controller on start.
|
||||||
|
- Uses IDENTIFY DEVICE to get sector size.
|
||||||
|
|
||||||
|
### Glacier
|
||||||
|
|
||||||
|
- Unit Testing setup for Host Machine
|
||||||
|
- Unit Tests for: Vector
|
||||||
|
- Added Iterators for: Vector, Array, ArrayView
|
||||||
|
- HashMap Move Semantics
|
||||||
|
|
||||||
|
### Yunq
|
||||||
|
|
||||||
|
- Moved message parsing/serialization to shared library.
|
||||||
|
|
||||||
## AcadiaOS 0.1.0 (2023-12-08)
|
## AcadiaOS 0.1.0 (2023-12-08)
|
||||||
|
|
||||||
This marks the first release of AcadiaOS! There is very little user functionality currently but a
|
This marks the first release of AcadiaOS! There is very little user functionality currently but a
|
||||||
|
|
|
@ -31,7 +31,7 @@ glcr::Status {{interface.name}}Client::{{method.name}}(const {{method.request}}&
|
||||||
|
|
||||||
const uint32_t kSentinel = 0xBEEFDEAD;
|
const uint32_t kSentinel = 0xBEEFDEAD;
|
||||||
buffer_.WriteAt<uint32_t>(0, kSentinel);
|
buffer_.WriteAt<uint32_t>(0, kSentinel);
|
||||||
buffer_.WriteAt<uint64_t>(8, {{loop.index0}});
|
buffer_.WriteAt<uint64_t>(8, {{method.number}});
|
||||||
|
|
||||||
cap_buffer_.Reset();
|
cap_buffer_.Reset();
|
||||||
{% if method.request == None %}
|
{% if method.request == None %}
|
||||||
|
|
|
@ -26,10 +26,10 @@ glcr::Status {{message.name}}::ParseFromBytes(const yunq::MessageView& message)
|
||||||
{%- if field.type == Type.CAPABILITY %}
|
{%- if field.type == Type.CAPABILITY %}
|
||||||
{%- if not field.repeated %}
|
{%- if not field.repeated %}
|
||||||
// Parse {{field.name}}.
|
// Parse {{field.name}}.
|
||||||
ASSIGN_OR_RETURN({{field.name}}_, message.ReadCapability({{loop.index0}}));
|
ASSIGN_OR_RETURN({{field.name}}_, message.ReadCapability({{field.number}}));
|
||||||
{%- else %}
|
{%- else %}
|
||||||
// Parse {{field.name}}.
|
// Parse {{field.name}}.
|
||||||
ASSIGN_OR_RETURN({{field.name}}_, message.ReadRepeatedCapability({{loop.index0}}));
|
ASSIGN_OR_RETURN({{field.name}}_, message.ReadRepeatedCapability({{field.number}}));
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
|
@ -43,10 +43,10 @@ glcr::Status {{message.name}}::ParseFromBytes(const yunq::MessageView& message,
|
||||||
{%- if field.type == Type.CAPABILITY %}
|
{%- if field.type == Type.CAPABILITY %}
|
||||||
{%- if not field.repeated %}
|
{%- if not field.repeated %}
|
||||||
// Parse {{field.name}}.
|
// Parse {{field.name}}.
|
||||||
ASSIGN_OR_RETURN({{field.name}}_, message.ReadCapability({{loop.index0}}, caps));
|
ASSIGN_OR_RETURN({{field.name}}_, message.ReadCapability({{field.number}}, caps));
|
||||||
{%- else %}
|
{%- else %}
|
||||||
// Parse {{field.name}}.
|
// Parse {{field.name}}.
|
||||||
ASSIGN_OR_RETURN({{field.name}}_, message.ReadRepeatedCapability({{loop.index0}}, caps));
|
ASSIGN_OR_RETURN({{field.name}}_, message.ReadRepeatedCapability({{field.number}}, caps));
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
|
@ -61,9 +61,9 @@ glcr::Status {{message.name}}::ParseFromBytesInternal(const yunq::MessageView& m
|
||||||
{%- if field.type != Type.CAPABILITY %}
|
{%- if field.type != Type.CAPABILITY %}
|
||||||
|
|
||||||
{%- if not field.repeated %}
|
{%- if not field.repeated %}
|
||||||
ASSIGN_OR_RETURN({{field.name}}_, message.ReadField<{{field.cpp_type()}}>({{loop.index0}}));
|
ASSIGN_OR_RETURN({{field.name}}_, message.ReadField<{{field.cpp_type()}}>({{field.number}}));
|
||||||
{%- else %}
|
{%- else %}
|
||||||
ASSIGN_OR_RETURN({{field.name}}_, message.ReadRepeated<{{field.cpp_type()}}>({{loop.index0}}));
|
ASSIGN_OR_RETURN({{field.name}}_, message.ReadRepeated<{{field.cpp_type()}}>({{field.number}}));
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
@ -88,17 +88,17 @@ uint64_t {{message.name}}::SerializeInternal(yunq::Serializer& serializer) const
|
||||||
{%- if not field.repeated %}
|
{%- if not field.repeated %}
|
||||||
|
|
||||||
{%- if field.type != Type.CAPABILITY %}
|
{%- if field.type != Type.CAPABILITY %}
|
||||||
serializer.WriteField<{{field.cpp_type()}}>({{loop.index0}}, {{field.name}}_);
|
serializer.WriteField<{{field.cpp_type()}}>({{field.number}}, {{field.name}}_);
|
||||||
{%- else %}
|
{%- else %}
|
||||||
serializer.WriteCapability({{loop.index0}}, {{field.name}}_);
|
serializer.WriteCapability({{field.number}}, {{field.name}}_);
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
{%- else %}
|
{%- else %}
|
||||||
|
|
||||||
{%- if field.type != Type.CAPABILITY %}
|
{%- if field.type != Type.CAPABILITY %}
|
||||||
serializer.WriteRepeated<{{field.cpp_type()}}>({{loop.index0}}, {{field.name}}_);
|
serializer.WriteRepeated<{{field.cpp_type()}}>({{field.number}}, {{field.name}}_);
|
||||||
{%- else %}
|
{%- else %}
|
||||||
serializer.WriteRepeatedCapability({{loop.index0}}, {{field.name}}_);
|
serializer.WriteRepeatedCapability({{field.number}}, {{field.name}}_);
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
|
@ -17,6 +17,7 @@ class LexemeType(Enum):
|
||||||
ARROW = 7
|
ARROW = 7
|
||||||
SEMICOLON = 8
|
SEMICOLON = 8
|
||||||
DOT = 9
|
DOT = 9
|
||||||
|
EQUALS = 10
|
||||||
|
|
||||||
|
|
||||||
class Lexeme():
|
class Lexeme():
|
||||||
|
@ -214,8 +215,11 @@ class Parser():
|
||||||
|
|
||||||
methods: list[Method] = []
|
methods: list[Method] = []
|
||||||
method_names = set()
|
method_names = set()
|
||||||
|
next_method_number = 0
|
||||||
while self.peektype() != LexemeType.RIGHT_BRACE:
|
while self.peektype() != LexemeType.RIGHT_BRACE:
|
||||||
m = self.method()
|
m = self.method()
|
||||||
|
m.number = next_method_number
|
||||||
|
next_method_number += 1
|
||||||
if m.name in method_names:
|
if m.name in method_names:
|
||||||
sys.exit("Method %s declared twice on %s" % (m.name, name))
|
sys.exit("Method %s declared twice on %s" % (m.name, name))
|
||||||
method_names.add(m.name)
|
method_names.add(m.name)
|
||||||
|
@ -266,8 +270,11 @@ class Parser():
|
||||||
|
|
||||||
fields: list[Field] = []
|
fields: list[Field] = []
|
||||||
field_names = set()
|
field_names = set()
|
||||||
|
next_field_num = 0
|
||||||
while self.peektype() != LexemeType.RIGHT_BRACE:
|
while self.peektype() != LexemeType.RIGHT_BRACE:
|
||||||
f = self.field()
|
f = self.field()
|
||||||
|
f.number = next_field_num
|
||||||
|
next_field_num += 1
|
||||||
if f.name in field_names:
|
if f.name in field_names:
|
||||||
sys.exit("Field %s declared twice on %s" % (f.name, name))
|
sys.exit("Field %s declared twice on %s" % (f.name, name))
|
||||||
field_names.add(f.name)
|
field_names.add(f.name)
|
||||||
|
|
|
@ -103,7 +103,7 @@ glcr::Status {{interface.name}}ServerBase::HandleRequest(const glcr::ByteBuffer&
|
||||||
|
|
||||||
switch(method_select) {
|
switch(method_select) {
|
||||||
{%- for method in interface.methods %}
|
{%- for method in interface.methods %}
|
||||||
case {{loop.index0}}: {
|
case {{method.number}}: {
|
||||||
|
|
||||||
{% if method.request != None %}
|
{% if method.request != None %}
|
||||||
{{method.request}} yunq_request;
|
{{method.request}} yunq_request;
|
||||||
|
|
Loading…
Reference in New Issue