Changeset 46b881c in mainline for uspace/srv/loader/main.c


Ignore:
Timestamp:
2011-01-29T11:36:41Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0b6931a, 8add9ca5
Parents:
e26a4633 (diff), ffa2c8ef (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

IPC/async: strictly isolate the use of low-level IPC methods (ipc_*) and async framework methods (async_*) in user code, do not allow a mixture of both in a single source file

Benefits for future plans

  • The async framework could use different communication style under the hood, but keeping the same high-level API
  • The async framework can be integrated more tightly with sessions without potential problems of intermixing session-aware async methods with session-unaware low-level methods in user code
  • The async_serialize_start()/_end() can be deprecated more easily
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/loader/main.c

    re26a4633 r46b881c  
    5050#include <fcntl.h>
    5151#include <sys/types.h>
    52 #include <ipc/ipc.h>
    5352#include <ipc/services.h>
    5453#include <ipc/loader.h>
     
    106105       
    107106        if (!async_data_read_receive(&callid, &len)) {
    108                 ipc_answer_0(callid, EINVAL);
    109                 ipc_answer_0(rid, EINVAL);
     107                async_answer_0(callid, EINVAL);
     108                async_answer_0(rid, EINVAL);
    110109                return;
    111110        }
     
    115114       
    116115        async_data_read_finalize(callid, &task_id, len);
    117         ipc_answer_0(rid, EOK);
     116        async_answer_0(rid, EOK);
    118117}
    119118
     
    135134        }
    136135       
    137         ipc_answer_0(rid, rc);
     136        async_answer_0(rid, rc);
    138137}
    139138
     
    155154        }
    156155       
    157         ipc_answer_0(rid, rc);
     156        async_answer_0(rid, rc);
    158157}
    159158
     
    188187                if (_argv == NULL) {
    189188                        free(buf);
    190                         ipc_answer_0(rid, ENOMEM);
     189                        async_answer_0(rid, ENOMEM);
    191190                        return;
    192191                }
     
    220219        }
    221220       
    222         ipc_answer_0(rid, rc);
     221        async_answer_0(rid, rc);
    223222}
    224223
     
    244243                if (_filv == NULL) {
    245244                        free(buf);
    246                         ipc_answer_0(rid, ENOMEM);
     245                        async_answer_0(rid, ENOMEM);
    247246                        return;
    248247                }
     
    271270        }
    272271       
    273         ipc_answer_0(rid, EOK);
     272        async_answer_0(rid, EOK);
    274273}
    275274
     
    287286        if (rc != EE_OK) {
    288287                DPRINTF("Failed to load executable '%s'.\n", pathname);
    289                 ipc_answer_0(rid, EINVAL);
     288                async_answer_0(rid, EINVAL);
    290289                return 1;
    291290        }
     
    304303                /* Statically linked program */
    305304                is_dyn_linked = false;
    306                 ipc_answer_0(rid, EOK);
     305                async_answer_0(rid, EOK);
    307306                return 0;
    308307        }
     
    312311                DPRINTF("Failed to load interpreter '%s.'\n",
    313312                    prog_info.interp);
    314                 ipc_answer_0(rid, EINVAL);
     313                async_answer_0(rid, EINVAL);
    315314                return 1;
    316315        }
    317316       
    318317        is_dyn_linked = true;
    319         ipc_answer_0(rid, EOK);
     318        async_answer_0(rid, EOK);
    320319       
    321320        return 0;
     
    343342                DPRINTF("Entry point: %p\n", interp_info.entry);
    344343               
    345                 ipc_answer_0(rid, EOK);
     344                async_answer_0(rid, EOK);
    346345                elf_run(&interp_info, &pcb);
    347346        } else {
    348347                /* Statically linked program */
    349                 ipc_answer_0(rid, EOK);
     348                async_answer_0(rid, EOK);
    350349                elf_run(&prog_info, &pcb);
    351350        }
     
    367366        /* Already have a connection? */
    368367        if (connected) {
    369                 ipc_answer_0(iid, ELIMIT);
     368                async_answer_0(iid, ELIMIT);
    370369                return;
    371370        }
     
    374373       
    375374        /* Accept the connection */
    376         ipc_answer_0(iid, EOK);
     375        async_answer_0(iid, EOK);
    377376       
    378377        /* Ignore parameters, the connection is already open */
     
    414413                        DPRINTF("Responding EINVAL to method %d.\n",
    415414                            IPC_GET_IMETHOD(call));
    416                         ipc_answer_0(callid, EINVAL);
     415                        async_answer_0(callid, EINVAL);
    417416                }
    418417        }
Note: See TracChangeset for help on using the changeset viewer.