Skip to content

Commit 567dc0f

Browse files
committed
libtype: list iter now returns Nodes only.
1 parent 49b1be9 commit 567dc0f

7 files changed

Lines changed: 44 additions & 39 deletions

File tree

amitools/vamos/lib/lexec/taskfunc.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ def find_task(self, task_name):
1818
return Task(self.ctx.mem, addr)
1919
# ready list?
2020
ready_list = self.exec_lib.task_ready
21-
for task in ready_list:
22-
if task.node.name.str == task_name:
23-
addr = task.addr
21+
for node in ready_list:
22+
if node.name.str == task_name:
23+
addr = node.addr
2424
log_exec.info("Find Task '%s': ready=%08x", task_name, addr)
2525
return Task(self.ctx.mem, addr)
2626
# wait list?
2727
wait_list = self.exec_lib.task_wait
28-
for task in wait_list:
29-
if task.node.name.str == task_name:
30-
addr = task.addr
28+
for node in wait_list:
29+
if node.name.str == task_name:
30+
addr = node.addr
3131
log_exec.info("Find Task '%s': wait=%08x", task_name, addr)
3232
return Task(self.ctx.mem, addr)
3333
log_exec.info("Find Task '%s': not found!")

amitools/vamos/libtypes/list_.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ def is_empty(self):
4646
node = self._head.succ.ref
4747
return node.succ.ref is None
4848

49-
def to_list(self):
50-
return [a for a in self]
49+
def to_list(self, promote=False):
50+
return [a for a in ListIter(self, promote=promote)]
5151

52-
def iter_at(self, node):
53-
return ListIter(self, node)
52+
def iter_at(self, node, promote=False):
53+
return ListIter(self, start_node=node, promote=promote)
5454

5555
def add_head(self, node):
5656
n = self._head.succ.ref
@@ -150,7 +150,12 @@ def __init__(self, mem, addr, **kwargs):
150150
self._tail = Node(mem, self.addr + 4)
151151

152152
def __iter__(self):
153-
return ListIter(self, promote=True)
153+
"""default Python iter is returning Nodes and does not promote"""
154+
return ListIter(self, promote=False)
155+
156+
def iter(self, **kw_args):
157+
"""alternative iterator that allows to pass paramters"""
158+
return ListIter(self, **kw_args)
154159

155160
def __str__(self):
156161
return "[List:@%06x,h=%06x,t=%06x,tp=%06x,%s]" % (

test/pytask/pytask_exec_list.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,15 @@ def task(ctx, task):
100100
h = ListHelper(ctx.alloc)
101101

102102
# find name
103-
node = exec_lib.FindName(h.list, "node1", wrap_res=Node)
103+
node = exec_lib.FindName(h.list, "node1")
104104
assert node is None
105105

106106
# add tail
107107
exec_lib.AddTail(h.list, h.node1)
108108
assert h.list.to_list() == [h.node1]
109109

110110
# find name
111-
node = exec_lib.FindName(h.list, "node1", wrap_res=Node)
111+
node = exec_lib.FindName(h.list, "node1")
112112
assert node == h.node1
113113

114114
# free list

test/pytask/pytask_exec_msg.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def task(ctx, task):
88
exec_lib = ctx.proxies.get_exec_lib_proxy()
99

1010
# create a new port
11-
port = exec_lib.CreateMsgPort(wrap_res=MsgPort)
11+
port = exec_lib.CreateMsgPort()
1212
assert type(port) is MsgPort
1313

1414
# delete a message port
@@ -26,11 +26,11 @@ def task(ctx, task):
2626
exec_lib = ctx.proxies.get_exec_lib_proxy()
2727

2828
# create a new port
29-
port = exec_lib.CreateMsgPort(wrap_res=MsgPort)
29+
port = exec_lib.CreateMsgPort()
3030
assert type(port) is MsgPort
3131

3232
# port is empty
33-
msg = exec_lib.GetMsg(port, wrap_res=MsgPort)
33+
msg = exec_lib.GetMsg(port)
3434
assert msg is None
3535

3636
# alloc message
@@ -41,14 +41,14 @@ def task(ctx, task):
4141
exec_lib.PutMsg(port, msg)
4242

4343
# get message from port
44-
msg2 = exec_lib.GetMsg(port, wrap_res=Message)
44+
msg2 = exec_lib.GetMsg(port)
4545
assert msg2
4646

4747
# got same message
4848
assert msg == msg2
4949

5050
# port empty again
51-
msg3 = exec_lib.GetMsg(port, wrap_res=MsgPort)
51+
msg3 = exec_lib.GetMsg(port)
5252
assert msg3 is None
5353

5454
# delete a message port
@@ -68,11 +68,11 @@ def task(ctx, task):
6868
exec_lib = ctx.proxies.get_exec_lib_proxy()
6969

7070
# create a new port
71-
port = exec_lib.CreateMsgPort(wrap_res=MsgPort)
71+
port = exec_lib.CreateMsgPort()
7272
assert type(port) is MsgPort
7373

7474
# port is empty
75-
msg = exec_lib.GetMsg(port, wrap_res=MsgPort)
75+
msg = exec_lib.GetMsg(port)
7676
assert msg is None
7777

7878
# alloc message
@@ -86,14 +86,14 @@ def task(ctx, task):
8686
exec_lib.ReplyMsg(msg)
8787

8888
# get message from port
89-
msg2 = exec_lib.GetMsg(port, wrap_res=Message)
89+
msg2 = exec_lib.GetMsg(port)
9090
assert msg2
9191

9292
# got same message
9393
assert msg == msg2
9494

9595
# port empty again
96-
msg3 = exec_lib.GetMsg(port, wrap_res=MsgPort)
96+
msg3 = exec_lib.GetMsg(port)
9797
assert msg3 is None
9898

9999
# delete a message port
@@ -113,7 +113,7 @@ def task(ctx, task):
113113
exec_lib = ctx.proxies.get_exec_lib_proxy()
114114

115115
# create a new port
116-
port = exec_lib.CreateMsgPort(wrap_res=MsgPort)
116+
port = exec_lib.CreateMsgPort()
117117
assert type(port) is MsgPort
118118

119119
# get sigmask
@@ -136,7 +136,7 @@ def task(ctx, task):
136136
assert new_mask & sig_mask == sig_mask
137137

138138
# get message from port
139-
msg2 = exec_lib.GetMsg(port, wrap_res=Message)
139+
msg2 = exec_lib.GetMsg(port)
140140
assert msg2
141141

142142
# got same message
@@ -159,7 +159,7 @@ def task(ctx, task):
159159
exec_lib = ctx.proxies.get_exec_lib_proxy()
160160

161161
# create a new port
162-
port = exec_lib.CreateMsgPort(wrap_res=MsgPort)
162+
port = exec_lib.CreateMsgPort()
163163
assert type(port) is MsgPort
164164

165165
# alloc message
@@ -192,28 +192,28 @@ def task(ctx, task):
192192
exec_lib = ctx.proxies.get_exec_lib_proxy()
193193

194194
# create a new port
195-
port = exec_lib.CreateMsgPort(wrap_res=MsgPort)
195+
port = exec_lib.CreateMsgPort()
196196
assert type(port) is MsgPort
197197

198198
# set name
199199
port.node.name.alloc_str(ctx.alloc, "foo")
200200

201201
# port is not known yet
202-
port2 = exec_lib.FindPort("foo", wrap_res=MsgPort)
202+
port2 = exec_lib.FindPort("foo")
203203
assert port2 is None
204204

205205
# add port
206206
exec_lib.AddPort(port)
207207

208208
# now we could find port
209-
port2 = exec_lib.FindPort("foo", wrap_res=MsgPort)
209+
port2 = exec_lib.FindPort("foo")
210210
assert port2 == port
211211

212212
# remove port again
213213
exec_lib.RemPort(port)
214214

215215
# now we cannot find it
216-
port2 = exec_lib.FindPort("foo", wrap_res=MsgPort)
216+
port2 = exec_lib.FindPort("foo")
217217
assert port2 is None
218218

219219
# free name string

test/pytask/pytask_exec_task.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def task(ctx, task):
99
exec_lib = ctx.proxies.get_exec_lib_proxy()
1010

1111
# find myself
12-
addr = exec_lib.FindTask(0)
12+
addr = exec_lib.FindTask(None)
1313
assert ami_task.addr == addr
1414

1515
# find myself by name
@@ -18,11 +18,11 @@ def task(ctx, task):
1818

1919
# find other task
2020
addr = exec_lib.FindTask("other_task")
21-
assert addr != 0
21+
assert type(addr) is Task
2222

2323
# find waiting task
2424
addr = exec_lib.FindTask("wait_task")
25-
assert addr != 0
25+
assert type(addr) is Task
2626
sched_task = task.find_task("wait_task")
2727
assert sched_task is not None
2828
sched_task.set_signal(1, 1)
@@ -37,7 +37,7 @@ def other_task(ctx, task):
3737

3838
while True:
3939
addr = exec_lib.FindTask("task")
40-
if addr == 0:
40+
if addr is None:
4141
break
4242

4343
return 0

test/pytask/pytask_util_tag.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ def func(ctx, lib):
3535
tl = TagList.alloc(ctx.alloc, (MyTag.FOO_TAG, 1), (MyTag.BAR_TAG, 2))
3636
assert tl is not None
3737
# test func
38-
tag = lib.FindTagItem(MyTag.BAR_TAG, tl, wrap_res=TagItem)
38+
tag = lib.FindTagItem(MyTag.BAR_TAG, tl)
3939
assert type(tag) is TagItem
4040
assert tag.get_addr() == tl.get_addr() + 8
4141
assert tag.get_tag() == MyTag.BAR_TAG
42-
tag = lib.FindTagItem(MyTag.BAZ_TAG, tl, wrap_res=TagItem)
42+
tag = lib.FindTagItem(MyTag.BAZ_TAG, tl)
4343
assert tag is None
4444
# free tag list
4545
tl.free()
@@ -180,7 +180,7 @@ def func(ctx, lib):
180180

181181
def pytask_util_alloc_free_tag_items_test(vamos_task):
182182
def func(ctx, lib):
183-
tag_list = lib.AllocateTagItems(8, wrap_res=TagList)
183+
tag_list = lib.AllocateTagItems(8)
184184
assert tag_list is not None
185185
lib.FreeTagItems(tag_list)
186186

@@ -193,7 +193,7 @@ def func(ctx, lib):
193193
assert tag_list is not None
194194

195195
# clone list
196-
clone_list = lib.CloneTagItems(tag_list, wrap_res=TagList)
196+
clone_list = lib.CloneTagItems(tag_list)
197197
assert clone_list is not None
198198

199199
# check for equality

test/unit/task_execscheduler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ def cleanup(self):
2525

2626
def check_exec(self, this_task, task_ready, task_wait):
2727
assert self.exec_lib.this_task.ref == this_task
28-
assert self.exec_lib.task_ready.to_list() == task_ready
29-
assert self.exec_lib.task_wait.to_list() == task_wait
28+
assert self.exec_lib.task_ready.to_list(promote=True) == task_ready
29+
assert self.exec_lib.task_wait.to_list(promote=True) == task_wait
3030

3131
def set_check_list(self, check_list):
3232
self.count = 0

0 commit comments

Comments
 (0)