Changes in / [c483fca:c742954] in mainline


Ignore:
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/drivers/ski.c

    rc483fca rc742954  
    3737#include <console/console.h>
    3838#include <console/chardev.h>
    39 #include <ddi/ddi.h>
    4039#include <sysinfo/sysinfo.h>
    4140#include <stdint.h>
     
    7069
    7170static ski_instance_t *instance = NULL;
    72 static parea_t ski_parea;
    7371
    7472/** Ask debug console if a key was pressed.
     
    107105        int count = POLL_LIMIT;
    108106
    109         if (ski_parea.mapped && !console_override)
    110                 return;
    111 
    112107        while (count > 0) {
    113108                wchar_t ch = ski_getchar();
     
    127122
    128123        while (true) {
    129                 poll_keyboard(instance);
     124                // TODO FIXME:
     125                // This currently breaks the kernel console
     126                // before we get the override from uspace.
     127                if (console_override)
     128                        poll_keyboard(instance);
     129
    130130                thread_usleep(POLL_INTERVAL);
    131131        }
     
    140140static void ski_init(void)
    141141{
    142         uintptr_t faddr;
    143 
    144142        if (instance)
    145143                return;
     
    152150            : "r15", "r8"
    153151        );
    154 
    155         faddr = frame_alloc(1, FRAME_LOWMEM | FRAME_ATOMIC, 0);
    156         if (faddr == 0)
    157                 panic("Cannot allocate page for ski console.");
    158 
    159         ddi_parea_init(&ski_parea);
    160         ski_parea.pbase = faddr;
    161         ski_parea.frames = 1;
    162         ski_parea.unpriv = false;
    163         ski_parea.mapped = false;
    164         ddi_parea_register(&ski_parea);
    165 
    166         sysinfo_set_item_val("ski.paddr", NULL, (sysarg_t) faddr);
    167152
    168153        instance = malloc(sizeof(ski_instance_t));
     
    205190static void ski_putwchar(outdev_t *dev, wchar_t ch)
    206191{
    207         if (ski_parea.mapped && !console_override)
    208                 return;
    209 
    210         if (ascii_check(ch)) {
    211                 if (ch == '\n')
    212                         ski_do_putchar('\r');
    213 
    214                 ski_do_putchar(ch);
    215         } else {
    216                 ski_do_putchar('?');
     192        // TODO FIXME:
     193        // This currently breaks the kernel console
     194        // before we get the override from uspace.
     195        if (console_override) {
     196                if (ascii_check(ch)) {
     197                        if (ch == '\n')
     198                                ski_do_putchar('\r');
     199
     200                        ski_do_putchar(ch);
     201                } else {
     202                        ski_do_putchar('?');
     203                }
    217204        }
    218205}
  • kernel/generic/include/mm/as.h

    rc483fca rc742954  
    268268
    269269extern as_t *as_create(unsigned int);
     270extern void as_destroy(as_t *);
    270271extern void as_hold(as_t *);
    271272extern void as_release(as_t *);
  • kernel/generic/src/console/console.c

    rc483fca rc742954  
    209209void grab_console(void)
    210210{
    211         sysinfo_set_item_val("kconsole", NULL, true);
    212211        event_notify_1(EVENT_KCONSOLE, false, true);
    213212        bool prev = console_override;
     
    227226void release_console(void)
    228227{
    229         sysinfo_set_item_val("kconsole", NULL, false);
    230228        console_override = false;
    231229        event_notify_1(EVENT_KCONSOLE, false, false);
  • kernel/generic/src/mm/as.c

    rc483fca rc742954  
    187187 *
    188188 */
    189 static void as_destroy(as_t *as)
     189void as_destroy(as_t *as)
    190190{
    191191        DEADLOCK_PROBE_INIT(p_asidlock);
  • kernel/generic/src/proc/program.c

    rc483fca rc742954  
    150150        prg->loader_status = elf_load((elf_header_t *) image_addr, as);
    151151        if (prg->loader_status != EE_OK) {
    152                 as_release(as);
     152                as_destroy(as);
    153153                prg->task = NULL;
    154154                prg->main_thread = NULL;
     
    176176        void *loader = program_loader;
    177177        if (!loader) {
    178                 as_release(as);
     178                as_destroy(as);
    179179                log(LF_OTHER, LVL_ERROR,
    180180                    "Cannot spawn loader as none was registered");
     
    184184        prg->loader_status = elf_load((elf_header_t *) program_loader, as);
    185185        if (prg->loader_status != EE_OK) {
    186                 as_release(as);
     186                as_destroy(as);
    187187                log(LF_OTHER, LVL_ERROR, "Cannot spawn loader (%s)",
    188188                    elf_error(prg->loader_status));
  • tools/xcw/bin/helenos-bld-config

    rc483fca rc742954  
    3333
    3434SRC_ROOT="$(dirname "$0")/../../.."
    35 if [ -z "$EXPORT_DIR" ]; then
    36         EXPORT_DIR="$SRC_ROOT/uspace/export"
    37 fi
    38 MAKEFILE_COMMON="$EXPORT_DIR"/Makefile.common
    39 MAKEFILE_CONFIG="$EXPORT_DIR"/Makefile.config
    40 CONFIG_MK="$EXPORT_DIR"/config.mk
     35MAKEFILE_COMMON="$SRC_ROOT"/Makefile.common
     36MAKEFILE_CONFIG="$SRC_ROOT"/Makefile.config
     37CONFIG_MK="$SRC_ROOT"/uspace/export/config.mk
    4138
    4239# Extract simple 'name = value' variable definition from Makefile
  • tools/xcw/bin/helenos-cc

    rc483fca rc742954  
    3434XCW="$(dirname "$0")"
    3535SRC_ROOT="$XCW/../../.."
    36 if [ -z "$EXPORT_DIR" ]; then
    37         EXPORT_DIR="$SRC_ROOT/uspace/export"
    38 fi
    3936UARCH="$("$XCW"/helenos-bld-config --uarch)"
    4037CC="$("$XCW"/helenos-bld-config --cc)"
     
    5249    "$@" \
    5350    -I"$XCW"/../include \
    54     -I"$EXPORT_DIR"/include/libc \
    55     -I"$EXPORT_DIR"/include
     51    -I"$SRC_ROOT"/uspace/lib/c/include \
     52    -I"$SRC_ROOT"/abi/include \
     53    -I"$SRC_ROOT"/uspace/lib/c/arch/"$UARCH"/include
  • tools/xcw/bin/helenos-ld

    rc483fca rc742954  
    3434XCW="$(dirname "$0")"
    3535SRC_ROOT="$XCW/../../.."
    36 if [ -z "$EXPORT_DIR" ]; then
    37         EXPORT_DIR="$SRC_ROOT/uspace/export"
    38 fi
    3936UARCH="$("$XCW"/helenos-bld-config --uarch)"
    4037CFLAGS="$("$XCW"/helenos-bld-config --cflags)"
     
    4643    $CFLAGS \
    4744    "$@" \
    48     "$EXPORT_DIR"/lib/crt0.o \
    49     "$EXPORT_DIR"/lib/crt1.o \
    50     "$EXPORT_DIR"/lib/libc.a \
     45    "$SRC_ROOT"/uspace/lib/c/crt0.o \
     46    "$SRC_ROOT"/uspace/lib/c/crt1.o \
     47    "$SRC_ROOT"/uspace/lib/c/libc.a \
    5148    -lgcc
  • tools/xcw/bin/helenos-pkg-config

    rc483fca rc742954  
    3535SRC_ROOT="$XCW/../../.."
    3636UARCH="$("$XCW"/helenos-bld-config --uarch)"
    37 if [ -z "$EXPORT_DIR" ]; then
    38         EXPORT_DIR="$SRC_ROOT/uspace/export"
    39 fi
    40 INCLUDE_DIR="$EXPORT_DIR/include"
    41 LIB_DIR="$EXPORT_DIR/lib"
    4237
    43 libmath_cflags="-I$INCLUDE_DIR/libmath"
    44 libmath_libs="$LIB_DIR/libmath.a"
     38libmath_cflags="-I$SRC_ROOT/uspace/lib/math/include\
     39    -I$SRC_ROOT/uspace/lib/math/arch/$UARCH/include"
     40libmath_libs="$SRC_ROOT/uspace/lib/math/libmath.a"
    4541
    46 libgui_cflags="-I$INCLUDE_DIR/libgui"
    47 libgui_libs="$LIB_DIR/libgui.a"
     42libgui_cflags="-I$SRC_ROOT/uspace/lib/gui"
     43libgui_libs="$SRC_ROOT/uspace/lib/gui/libgui.a"
    4844
    49 libdraw_cflags="-I$INCLUDE_DIR/libdraw"
    50 libdraw_libs="$LIB_DIR/libdraw.a $LIB_DIR/libsoftrend.a"
     45libdraw_cflags="-I$SRC_ROOT/uspace/lib/draw"
     46libdraw_libs="$SRC_ROOT/uspace/lib/draw/libdraw.a \
     47    $SRC_ROOT/uspace/lib/softrend/libsoftrend.a"
    5148
    52 libhound_cflags="-I$INCLUDE_DIR/libhound"
    53 libhound_libs="$LIB_DIR/libhound.a"
     49libhound_cflags="-I$SRC_ROOT/uspace/lib/hound/include"
     50libhound_libs="$SRC_ROOT/uspace/lib/hound/libhound.a"
    5451
    55 libpcm_cflags="-I$INCLUDE_DIR/libpcm"
    56 libpcm_libs="$LIB_DIR/libpcm.a"
     52libpcm_cflags="-I$SRC_ROOT/uspace/lib/pcm/include"
     53libpcm_libs="$SRC_ROOT/uspace/lib/pcm/libpcm.a"
    5754
    5855action=none
  • uspace/Makefile

    rc483fca rc742954  
    273273        $(MAKE) -r -C $(basename $@) all-test PRECHECK=$(PRECHECK)
    274274
    275 export: $(BUILDS)
     275export: lib/posix.build lib/math.build lib/clui.build
    276276        $(MAKE) -r -C lib/posix export EXPORT_DIR=$(EXPORT_DIR)
    277277
  • uspace/app/fontviewer/fontviewer.c

    rc483fca rc742954  
    170170        source_t leading_bg = rgb(170, 238, 255);
    171171        source_t leading_fg = rgb(0, 170, 212);
    172         font_t *info_font = NULL;
    173         font_t *font = NULL;
    174 
     172
     173        font_t *font;
    175174        errno_t rc = create_font(&font, points);
    176175        if (rc != EOK) {
    177176                printf("Failed creating font\n");
    178                 goto out_err;
    179         }
    180 
     177                return rc;
     178        }
     179
     180        font_t *info_font;
    181181        rc = embedded_font_create(&info_font, 16);
    182182        if (rc != EOK) {
    183183                printf("Failed creating info font\n");
    184                 goto out_err;
     184                return rc;
    185185        }
    186186
     
    188188        rc = font_get_metrics(font, &font_metrics);
    189189        if (rc != EOK)
    190                 goto out_err;
     190                return rc;
    191191
    192192        surface_coord_t top = 50;
     
    238238        }
    239239
    240 out_err:
    241         if (font)
    242                 font_release(font);
    243         if (info_font)
    244                 font_release(info_font);
    245         return rc;
     240        font_release(font);
     241        return EOK;
    246242}
    247243
  • uspace/drv/char/ski-con/ski-con.c

    rc483fca rc742954  
    11/*
    22 * Copyright (c) 2005 Jakub Jermar
    3  * Copyright (c) 2018 Jiri Svoboda
     3 * Copyright (c) 2017 Jiri Svoboda
    44 * All rights reserved.
    55 *
     
    3131 */
    3232
    33 #include <as.h>
    3433#include <async.h>
    3534#include <ddf/driver.h>
    3635#include <ddf/log.h>
    37 #include <ddi.h>
    3836#include <errno.h>
    3937#include <fibril.h>
     
    4240#include <stdlib.h>
    4341#include <stdbool.h>
    44 #include <sysinfo.h>
    4542
    4643#include "ski-con.h"
     
    7168        ddf_fun_t *fun = NULL;
    7269        bool bound = false;
    73         uintptr_t faddr;
    74         void *addr = AS_AREA_ANY;
    7570        errno_t rc;
    7671
     
    9287        con->cds.sarg = con;
    9388
    94         rc = sysinfo_get_value("ski.paddr", &faddr);
    95         if (rc != EOK)
    96                 faddr = 0; /* No kernel driver to arbitrate with */
    97 
    98         if (faddr != 0) {
    99                 addr = AS_AREA_ANY;
    100                 rc = physmem_map(faddr, 1, AS_AREA_READ | AS_AREA_CACHEABLE,
    101                     &addr);
    102                 if (rc != EOK) {
    103                         ddf_msg(LVL_ERROR, "Cannot map kernel driver arbitration area.");
    104                         goto error;
    105                 }
    106         }
    107 
    10889        rc = ddf_fun_bind(fun);
    10990        if (rc != EOK) {
     
    126107        return EOK;
    127108error:
    128         if (addr != AS_AREA_ANY)
    129                 as_area_destroy(addr);
    130109        if (bound)
    131110                ddf_fun_unbind(fun);
     
    148127}
    149128
    150 /** Detect if SKI console is in use by the kernel.
    151  *
    152  * This is needed since the kernel has no way of fencing off the user-space
    153  * driver.
    154  *
    155  * @return @c true if in use by the kernel.
    156  */
    157 static bool ski_con_disabled(void)
    158 {
    159         sysarg_t kconsole;
    160 
    161         /*
    162          * XXX Ideally we should get information from our kernel counterpart
    163          * driver. But there needs to be a mechanism for the kernel console
    164          * to inform the kernel driver.
    165          */
    166         if (sysinfo_get_value("kconsole", &kconsole) != EOK)
    167                 return false;
    168 
    169         return kconsole != false;
    170 }
    171 
    172129/** Poll Ski for keypresses. */
    173130static errno_t ski_con_fibril(void *arg)
     
    178135
    179136        while (true) {
    180                 while (!ski_con_disabled()) {
     137                while (true) {
    181138                        c = ski_con_getchar();
    182139                        if (c == 0)
     
    289246        uint8_t *dp = (uint8_t *) data;
    290247
    291         if (!ski_con_disabled()) {
    292                 for (i = 0; i < size; i++) {
    293                         ski_con_putchar(con, dp[i]);
    294                 }
    295         }
     248        for (i = 0; i < size; i++)
     249                ski_con_putchar(con, dp[i]);
    296250
    297251        *nwr = size;
  • uspace/drv/char/ski-con/ski-con.h

    rc483fca rc742954  
    5656        fibril_mutex_t buf_lock;
    5757        fibril_condvar_t buf_cv;
    58         /** Memory area mapped to arbitrate with the kernel driver */
    59         void *mem_area;
    6058} ski_con_t;
    6159
  • uspace/lib/c/generic/loader.c

    rc483fca rc742954  
    200200        }
    201201
    202         rc = loader_set_program(ldr, abspath, fd);
     202        rc = loader_set_program(ldr, path, fd);
    203203        vfs_put(fd);
    204204        return rc;
  • uspace/lib/draw/font/bitmap_backend.c

    rc483fca rc742954  
    212212
    213213        data->decoder->release(data->decoder_data);
    214         free(data);
    215214}
    216215
  • uspace/lib/drv/generic/driver.c

    rc483fca rc742954  
    145145        }
    146146
     147        /* Add one reference that will be dropped by driver_dev_remove() */
     148        dev_add_ref(dev);
    147149        dev->handle = dev_handle;
    148150        dev->name = dev_name;
     
    731733                return NULL;
    732734
     735        /* Add one reference that will be dropped by ddf_fun_destroy() */
    733736        fun->dev = dev;
    734         dev_add_ref(fun->dev);
     737        fun_add_ref(fun);
    735738
    736739        fun->bound = false;
     
    740743                fun->name = str_dup(name);
    741744                if (fun->name == NULL) {
    742                         fun_del_ref(fun);       /* fun is destroyed */
     745                        delete_function(fun);
    743746                        return NULL;
    744747                }
  • uspace/lib/hound/src/protocol.c

    rc483fca rc742954  
    615615                        break;
    616616                default:
    617                         /*
    618                          * In case we called async_get_call() after we had
    619                          * already received IPC_M_PHONE_HUNGUP deeper in the
    620                          * protocol handling, the capability handle will be
    621                          * invalid, so act carefully here.
    622                          */
    623                         if (call.cap_handle != CAP_NIL)
    624                                 async_answer_0(&call, ENOTSUP);
     617                        async_answer_0(&call, ENOTSUP);
    625618                        return;
    626619                }
  • uspace/lib/posix/Makefile

    rc483fca rc742954  
    3636        ../math/libmath.a \
    3737        ../clui/libclui.a \
    38         ../gui/libgui.a \
    39         ../draw/libdraw.a \
    40         ../softrend/libsoftrend.a \
    41         ../hound/libhound.a \
    42         ../pcm/libpcm.a \
    4338        $(LIBC_PREFIX)/libc.a \
    4439        $(LIBC_PREFIX)/crt0.o \
     
    9893include $(USPACE_PREFIX)/Makefile.common
    9994
    100 export: $(EXPORT_DIR)/config.mk $(EXPORT_DIR)/config.rc \
    101     $(EXPORT_DIR)/Makefile.common $(EXPORT_DIR)/Makefile.config
     95export: $(EXPORT_DIR)/config.mk $(EXPORT_DIR)/config.rc
    10296
    10397$(EXPORT_DIR)/config.mk: export-libs export-includes
     
    117111        sed 's:$$(HELENOS_EXPORT_ROOT):$$HELENOS_EXPORT_ROOT:g' < $< >$@
    118112
    119 $(EXPORT_DIR)/Makefile.common: ../../../Makefile.common
    120         cp $< $@
    121 
    122 $(EXPORT_DIR)/Makefile.config: ../../../Makefile.config
    123         cp $< $@
    124 
    125113export-libs: $(EXPORT_FILES) export-includes
    126114        mkdir -p $(EXPORT_DIR)/lib
     
    136124        cp -L ../clui/tinput.h $(EXPORT_DIR)/include.new/libclui
    137125        rm -rf $(EXPORT_DIR)/include
    138         mkdir -p $(EXPORT_DIR)/include.new/libdraw
    139         cp -r -L -t $(EXPORT_DIR)/include.new/libdraw ../draw/*.h
    140         mkdir -p $(EXPORT_DIR)/include.new/libdraw/codec
    141         cp -r -L -t $(EXPORT_DIR)/include.new/libdraw/codec ../draw/codec/*.h
    142         mkdir -p $(EXPORT_DIR)/include.new/libgui
    143         cp -L -t $(EXPORT_DIR)/include.new/libgui ../gui/*.h
    144         mkdir -p $(EXPORT_DIR)/include.new/libhound
    145         cp -r -L -t $(EXPORT_DIR)/include.new/libhound ../hound/include/*
    146         mkdir -p $(EXPORT_DIR)/include.new/libpcm
    147         cp -r -L -t $(EXPORT_DIR)/include.new/libpcm ../pcm/include/*
    148126        mv $(EXPORT_DIR)/include.new $(EXPORT_DIR)/include
  • uspace/lib/usbhost/src/bus.c

    rc483fca rc742954  
    370370int bus_endpoint_add(device_t *device, const usb_endpoint_descriptors_t *desc, endpoint_t **out_ep)
    371371{
    372         int err = EINVAL;
     372        int err;
    373373        assert(device);
    374374
     
    392392        assert((ep->required_transfer_buffer_policy & ~ep->transfer_buffer_policy) == 0);
    393393
     394        /* Bus reference */
     395        endpoint_add_ref(ep);
     396
    394397        const size_t idx = bus_endpoint_index(ep->endpoint, ep->direction);
    395398        if (idx >= ARRAY_SIZE(device->endpoints)) {
     
    422425        }
    423426        fibril_mutex_unlock(&device->guard);
    424         if (err)
    425                 goto drop;
     427        if (err) {
     428                endpoint_del_ref(ep);
     429                return err;
     430        }
    426431
    427432        if (out_ep) {
     
    433438        return EOK;
    434439drop:
     440        /* Bus reference */
    435441        endpoint_del_ref(ep);
    436         return err;
     442        return EINVAL;
    437443}
    438444
  • uspace/srv/devman/devtree.c

    rc483fca rc742954  
    144144        }
    145145
    146         if (!insert_fun_node(tree, fun, str_dup(""), NULL)) {
    147                 fun_del_ref(fun);       /* fun is destroyed */
    148                 fibril_rwlock_write_unlock(&tree->rwlock);
    149                 return false;
    150         }
     146        fun_add_ref(fun);
     147        insert_fun_node(tree, fun, str_dup(""), NULL);
    151148
    152149        match_id_t *id = create_match_id();
     
    165162        }
    166163
     164        dev_add_ref(dev);
    167165        insert_dev_node(tree, dev, fun);
    168166
  • uspace/srv/devman/driver.c

    rc483fca rc742954  
    462462                        list_remove(&dev->driver_devices);
    463463                        fibril_mutex_unlock(&driver->driver_mutex);
    464                         /* Give an extra reference to driver_reassign_fibril */
    465                         dev_add_ref(dev);
    466464                        fid_t fid = fibril_create(driver_reassign_fibril, dev);
    467465                        if (fid == 0) {
    468466                                log_msg(LOG_DEFAULT, LVL_ERROR,
    469467                                    "Error creating fibril to assign driver.");
    470                                 dev_del_ref(dev);
    471468                        }
    472469                        fibril_add_ready(fid);
  • uspace/srv/devman/drv_conn.c

    rc483fca rc742954  
    284284
    285285        fun_node_t *fun = create_fun_node();
    286         /*
    287          * Hold a temporary reference while we work with fun. The reference from
    288          * create_fun_node() moves to the device tree.
    289          */
     286        /* One reference for creation, one for us */
     287        fun_add_ref(fun);
    290288        fun_add_ref(fun);
    291289        fun->ftype = ftype;
     
    302300                fun_busy_unlock(fun);
    303301                fun_del_ref(fun);
    304                 fun_del_ref(fun);       /* fun is destroyed */
     302                delete_fun_node(fun);
    305303                async_answer_0(call, ENOMEM);
    306304                return;
  • uspace/srv/devman/fun.c

    rc483fca rc742954  
    317317
    318318                insert_dev_node(&device_tree, dev, fun);
     319                dev_add_ref(dev);
    319320        }
    320321
Note: See TracChangeset for help on using the changeset viewer.