Changeset 5be1923 in mainline for generic/src/proc


Ignore:
Timestamp:
2006-03-14T12:11:28Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d3e7ff4
Parents:
4bb4836d
Message:

Added simpler userspace starting.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/proc/task.c

    r4bb4836d r5be1923  
    2727 */
    2828
     29#include <main/uinit.h>
    2930#include <proc/thread.h>
    3031#include <proc/task.h>
     
    3940#include <ipc/ns.h>
    4041#include <memstr.h>
     42
     43#include <elf.h>
    4144
    4245SPINLOCK_INITIALIZE(tasks_lock);
     
    6063 * @param as Task's address space.
    6164 *
    62  * @return New task's structure on success, NULL on failure.
     65 * @return New task's structure
    6366 *
    6467 */
     
    8992}
    9093
     94/** Create new task with 1 thread and run it
     95 *
     96 * @return Task of the running program or NULL on error
     97 */
     98task_t * task_run_program(void *program_addr)
     99{
     100        as_t *as;
     101        as_area_t *a;
     102        int rc;
     103        thread_t *t;
     104        task_t *task;
     105
     106        as = as_create(0);
     107
     108        rc = elf_load((elf_header_t *) config.init_addr, as);
     109        if (rc != EE_OK) {
     110                as_free(as);
     111                return NULL;
     112        }
     113       
     114        task = task_create(as);
     115        t = thread_create(uinit, (void *)((elf_header_t *) config.init_addr)->e_entry,
     116                          task, THREAD_USER_STACK);
     117       
     118        /*
     119         * Create the data as_area.
     120         */
     121        a = as_area_create(as, AS_AREA_STACK, 1, USTACK_ADDRESS);
     122       
     123        thread_ready(t);
     124
     125        return task;
     126}
Note: See TracChangeset for help on using the changeset viewer.