Changeset 4c6fd56 in mainline for uspace/lib/wndmgt/test/wndmgt.c


Ignore:
Timestamp:
2023-09-16T19:58:18Z (9 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7d7f5e3
Parents:
6a0b2cc
git-author:
Jiri Svoboda <jiri@…> (2023-09-16 19:48:07)
git-committer:
Jiri Svoboda <jiri@…> (2023-09-16 19:58:18)
Message:

loc_server_register() should be callable more than once (API only)

Now loc_server_register() returns a pointer to a loc_srv_t object,
that is then passed to loc_service_register() and
loc_service_add_to_cat().

Added loc_server_unregister() that unregisters the server
and frees the loc_srv_t object.

Updated all callers. The implementation, however, is a stub.
It is not actually possible to call loc_server_register() more
than once, yet.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/wndmgt/test/wndmgt.c

    r6a0b2cc r4c6fd56  
    117117        wndmgt_t *wndmgt = NULL;
    118118        test_response_t resp;
    119 
    120         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    121 
    122         // FIXME This causes this test to be non-reentrant!
    123         rc = loc_server_register(test_wndmgt_server);
    124         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    125 
    126         rc = loc_service_register(test_wndmgt_svc, &sid);
    127         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    128 
    129         rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt);
    130         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    131         PCUT_ASSERT_NOT_NULL(wndmgt);
    132 
    133         wndmgt_close(wndmgt);
    134         rc = loc_service_unregister(sid);
    135         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     119        loc_srv_t *srv;
     120
     121        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     122
     123        // FIXME This causes this test to be non-reentrant!
     124        rc = loc_server_register(test_wndmgt_server, &srv);
     125        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     126
     127        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
     128        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     129
     130        rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt);
     131        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     132        PCUT_ASSERT_NOT_NULL(wndmgt);
     133
     134        wndmgt_close(wndmgt);
     135        rc = loc_service_unregister(srv, sid);
     136        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     137        loc_server_unregister(srv);
    136138}
    137139
     
    144146        wndmgt_window_list_t *list;
    145147        test_response_t resp;
    146 
    147         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    148 
    149         // FIXME This causes this test to be non-reentrant!
    150         rc = loc_server_register(test_wndmgt_server);
    151         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    152 
    153         rc = loc_service_register(test_wndmgt_svc, &sid);
     148        loc_srv_t *srv;
     149
     150        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     151
     152        // FIXME This causes this test to be non-reentrant!
     153        rc = loc_server_register(test_wndmgt_server, &srv);
     154        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     155
     156        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    154157        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    155158
     
    166169
    167170        wndmgt_close(wndmgt);
    168         rc = loc_service_unregister(sid);
    169         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     171        rc = loc_service_unregister(srv, sid);
     172        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     173        loc_server_unregister(srv);
    170174}
    171175
     
    178182        wndmgt_window_list_t *list;
    179183        test_response_t resp;
    180 
    181         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    182 
    183         // FIXME This causes this test to be non-reentrant!
    184         rc = loc_server_register(test_wndmgt_server);
    185         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    186 
    187         rc = loc_service_register(test_wndmgt_svc, &sid);
     184        loc_srv_t *srv;
     185
     186        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     187
     188        // FIXME This causes this test to be non-reentrant!
     189        rc = loc_server_register(test_wndmgt_server, &srv);
     190        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     191
     192        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    188193        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    189194
     
    212217        wndmgt_free_window_list(list);
    213218        wndmgt_close(wndmgt);
    214         rc = loc_service_unregister(sid);
    215         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     219        rc = loc_service_unregister(srv, sid);
     220        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     221        loc_server_unregister(srv);
    216222}
    217223
     
    225231        wndmgt_window_info_t *info;
    226232        test_response_t resp;
    227 
    228         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    229 
    230         // FIXME This causes this test to be non-reentrant!
    231         rc = loc_server_register(test_wndmgt_server);
    232         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    233 
    234         rc = loc_service_register(test_wndmgt_svc, &sid);
     233        loc_srv_t *srv;
     234
     235        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     236
     237        // FIXME This causes this test to be non-reentrant!
     238        rc = loc_server_register(test_wndmgt_server, &srv);
     239        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     240
     241        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    235242        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    236243
     
    249256
    250257        wndmgt_close(wndmgt);
    251         rc = loc_service_unregister(sid);
    252         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     258        rc = loc_service_unregister(srv, sid);
     259        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     260        loc_server_unregister(srv);
    253261}
    254262
     
    262270        wndmgt_window_info_t *info;
    263271        test_response_t resp;
    264 
    265         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    266 
    267         // FIXME This causes this test to be non-reentrant!
    268         rc = loc_server_register(test_wndmgt_server);
    269         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    270 
    271         rc = loc_service_register(test_wndmgt_svc, &sid);
     272        loc_srv_t *srv;
     273
     274        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     275
     276        // FIXME This causes this test to be non-reentrant!
     277        rc = loc_server_register(test_wndmgt_server, &srv);
     278        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     279
     280        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    272281        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    273282
     
    297306        wndmgt_free_window_info(info);
    298307        wndmgt_close(wndmgt);
    299         rc = loc_service_unregister(sid);
    300         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     308        rc = loc_service_unregister(srv, sid);
     309        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     310        loc_server_unregister(srv);
    301311}
    302312
     
    310320        sysarg_t wnd_id;
    311321        test_response_t resp;
    312 
    313         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    314 
    315         // FIXME This causes this test to be non-reentrant!
    316         rc = loc_server_register(test_wndmgt_server);
    317         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    318 
    319         rc = loc_service_register(test_wndmgt_svc, &sid);
     322        loc_srv_t *srv;
     323
     324        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     325
     326        // FIXME This causes this test to be non-reentrant!
     327        rc = loc_server_register(test_wndmgt_server, &srv);
     328        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     329
     330        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    320331        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    321332
     
    336347
    337348        wndmgt_close(wndmgt);
    338         rc = loc_service_unregister(sid);
    339         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     349        rc = loc_service_unregister(srv, sid);
     350        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     351        loc_server_unregister(srv);
    340352}
    341353
     
    349361        sysarg_t wnd_id;
    350362        test_response_t resp;
    351 
    352         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    353 
    354         // FIXME This causes this test to be non-reentrant!
    355         rc = loc_server_register(test_wndmgt_server);
    356         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    357 
    358         rc = loc_service_register(test_wndmgt_svc, &sid);
     363        loc_srv_t *srv;
     364
     365        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     366
     367        // FIXME This causes this test to be non-reentrant!
     368        rc = loc_server_register(test_wndmgt_server, &srv);
     369        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     370
     371        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    359372        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    360373
     
    375388
    376389        wndmgt_close(wndmgt);
    377         rc = loc_service_unregister(sid);
    378         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     390        rc = loc_service_unregister(srv, sid);
     391        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     392        loc_server_unregister(srv);
    379393}
    380394
     
    387401        sysarg_t wnd_id;
    388402        test_response_t resp;
    389 
    390         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    391 
    392         // FIXME This causes this test to be non-reentrant!
    393         rc = loc_server_register(test_wndmgt_server);
    394         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    395 
    396         rc = loc_service_register(test_wndmgt_svc, &sid);
     403        loc_srv_t *srv;
     404
     405        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     406
     407        // FIXME This causes this test to be non-reentrant!
     408        rc = loc_server_register(test_wndmgt_server, &srv);
     409        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     410
     411        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    397412        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    398413
     
    411426
    412427        wndmgt_close(wndmgt);
    413         rc = loc_service_unregister(sid);
    414         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     428        rc = loc_service_unregister(srv, sid);
     429        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     430        loc_server_unregister(srv);
    415431}
    416432
     
    423439        sysarg_t wnd_id;
    424440        test_response_t resp;
    425 
    426         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    427 
    428         // FIXME This causes this test to be non-reentrant!
    429         rc = loc_server_register(test_wndmgt_server);
    430         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    431 
    432         rc = loc_service_register(test_wndmgt_svc, &sid);
     441        loc_srv_t *srv;
     442
     443        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     444
     445        // FIXME This causes this test to be non-reentrant!
     446        rc = loc_server_register(test_wndmgt_server, &srv);
     447        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     448
     449        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    433450        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    434451
     
    447464
    448465        wndmgt_close(wndmgt);
    449         rc = loc_service_unregister(sid);
    450         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     466        rc = loc_service_unregister(srv, sid);
     467        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     468        loc_server_unregister(srv);
    451469}
    452470
     
    458476        wndmgt_t *wndmgt = NULL;
    459477        test_response_t resp;
    460 
    461         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    462 
    463         // FIXME This causes this test to be non-reentrant!
    464         rc = loc_server_register(test_wndmgt_server);
    465         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    466 
    467         rc = loc_service_register(test_wndmgt_svc, &sid);
     478        loc_srv_t *srv;
     479
     480        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     481
     482        // FIXME This causes this test to be non-reentrant!
     483        rc = loc_server_register(test_wndmgt_server, &srv);
     484        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     485
     486        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    468487        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    469488
     
    494513        wndmgt_close(wndmgt);
    495514
    496         rc = loc_service_unregister(sid);
    497         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     515        rc = loc_service_unregister(srv, sid);
     516        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     517        loc_server_unregister(srv);
    498518}
    499519
     
    505525        wndmgt_t *wndmgt = NULL;
    506526        test_response_t resp;
    507 
    508         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    509 
    510         // FIXME This causes this test to be non-reentrant!
    511         rc = loc_server_register(test_wndmgt_server);
    512         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    513 
    514         rc = loc_service_register(test_wndmgt_svc, &sid);
     527        loc_srv_t *srv;
     528
     529        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     530
     531        // FIXME This causes this test to be non-reentrant!
     532        rc = loc_server_register(test_wndmgt_server, &srv);
     533        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     534
     535        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    515536        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    516537
     
    541562        wndmgt_close(wndmgt);
    542563
    543         rc = loc_service_unregister(sid);
    544         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     564        rc = loc_service_unregister(srv, sid);
     565        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     566        loc_server_unregister(srv);
    545567}
    546568
     
    552574        wndmgt_t *wndmgt = NULL;
    553575        test_response_t resp;
    554 
    555         async_set_fallback_port_handler(test_wndmgt_conn, &resp);
    556 
    557         // FIXME This causes this test to be non-reentrant!
    558         rc = loc_server_register(test_wndmgt_server);
    559         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    560 
    561         rc = loc_service_register(test_wndmgt_svc, &sid);
     576        loc_srv_t *srv;
     577
     578        async_set_fallback_port_handler(test_wndmgt_conn, &resp);
     579
     580        // FIXME This causes this test to be non-reentrant!
     581        rc = loc_server_register(test_wndmgt_server, &srv);
     582        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     583
     584        rc = loc_service_register(srv, test_wndmgt_svc, &sid);
    562585        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    563586
     
    588611        wndmgt_close(wndmgt);
    589612
    590         rc = loc_service_unregister(sid);
    591         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     613        rc = loc_service_unregister(srv, sid);
     614        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     615        loc_server_unregister(srv);
    592616}
    593617
Note: See TracChangeset for help on using the changeset viewer.