Changes in / [94e46c9:a25d893] in mainline


Ignore:
Files:
40 deleted
55 edited

Legend:

Unmodified
Added
Removed
  • .bzrignore

    r94e46c9 ra25d893  
    2020kernel/arch/amd64/include/arch/common.h
    2121kernel/generic/src/debug/real_map.bin
    22 uspace/app/barber/barber
    23 uspace/app/barber/images.c
    24 uspace/app/barber/images.h
    2522uspace/app/bdsh/bdsh
    2623uspace/app/bdsh/test-bdsh
     
    2825uspace/app/blkdump/blkdump
    2926uspace/app/bnchmark/bnchmark
    30 uspace/drv/char/pl050/pl050
    3127uspace/app/date/date
    3228uspace/app/devctl/devctl
     
    4844uspace/app/mkfat/mkfat
    4945uspace/app/mkmfs/mkmfs
    50 uspace/app/modplay/modplay
    5146uspace/app/netecho/netecho
    5247uspace/app/nettest1/nettest1
     
    5752uspace/app/ping/ping
    5853uspace/app/ping6/ping6
    59 uspace/app/rcubench/rcubench
    60 uspace/app/rcutest/rcutest
    6154uspace/app/redir/redir
    6255uspace/app/sbi/sbi
     
    8073uspace/app/wavplay/wavplay
    8174uspace/app/websrv/websrv
    82 uspace/dist/app/barber
    8375uspace/dist/app/bdsh
    8476uspace/dist/app/bithenge
     
    10395uspace/dist/app/mkfat
    10496uspace/dist/app/mkmfs
    105 uspace/dist/app/modplay
    10697uspace/dist/app/netecho
    10798uspace/dist/app/nettest1
     
    112103uspace/dist/app/ping
    113104uspace/dist/app/ping6
    114 uspace/dist/app/rcubench
    115 uspace/dist/app/rcutest
    116105uspace/dist/app/redir
    117106uspace/dist/app/sbi
     
    145134uspace/dist/drv/ns8250/
    146135uspace/dist/drv/ohci/
    147 uspace/dist/drv/pc/
    148136uspace/dist/drv/pciintel/
    149137uspace/dist/drv/ps2mouse/
     
    221209uspace/drv/root/root/root
    222210uspace/drv/root/virt/virt
    223 uspace/drv/platform/icp/icp
    224 uspace/drv/platform/pc/pc
    225211uspace/drv/platform/rootpc/rootpc
    226212uspace/drv/nic/e1k/e1k
  • boot/Makefile

    r94e46c9 ra25d893  
    115115                cp "$(USPACE_PATH)/$(DRVS_PATH)/$$file_dir/$$file_name/$$file_name.dev" "$(DIST_PATH)/$(DRVS_PATH)/$$file_name/" ; \
    116116        done
    117         for file in $(RD_DRVS_FW) ; do \
    118                 file_dir="`dirname "$$file"`" ; \
    119                 file_name="`basename "$$file"`" ; \
    120                 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$file_dir/$$file_name/$$file_name.fw" "$(DIST_PATH)/$(DRVS_PATH)/$$file_name/" ; \
    121         done
    122117        if ls $(DIST_OVERLAY_PATH)/* >/dev/null; then \
    123118                cp -r -L $(DIST_OVERLAY_PATH)/* "$(DIST_PATH)"; \
  • boot/Makefile.common

    r94e46c9 ra25d893  
    139139        nic/rtl8139 \
    140140        nic/rtl8169 \
    141         nic/ar9271 \
    142141        block/ahci
    143142
    144143RD_DRV_CFG =
    145 
    146 RD_DRVS_FW_NON_ESSENTIAL = \
    147         nic/ar9271
    148144
    149145RD_LIBS =
     
    227223        $(USPACE_PATH)/app/viewer/viewer \
    228224        $(USPACE_PATH)/app/df/df \
    229         $(USPACE_PATH)/app/fontviewer/fontviewer \
    230         $(USPACE_PATH)/app/wifi_supplicant/wifi_supplicant
     225        $(USPACE_PATH)/app/fontviewer/fontviewer
    231226
    232227RD_TESTS = \
     
    252247RD_APPS = $(RD_APPS_ESSENTIAL)
    253248RD_DRVS = $(RD_DRVS_ESSENTIAL)
    254 RD_DRVS_FW = $(RD_DRVS_FW_ESSENTIAL)
    255249else
    256250RD_SRVS = $(RD_SRVS_ESSENTIAL) $(RD_SRVS_NON_ESSENTIAL)
    257251RD_APPS = $(RD_APPS_ESSENTIAL) $(RD_APPS_NON_ESSENTIAL)
    258252RD_DRVS = $(RD_DRVS_ESSENTIAL) $(RD_DRVS_NON_ESSENTIAL)
    259 RD_DRVS_FW = $(RD_DRVS_FW_ESSENTIAL) $(RD_DRVS_FW_NON_ESSENTIAL)
    260253endif
    261254
  • boot/arch/mips32/Makefile.inc

    r94e46c9 ra25d893  
    6464endif
    6565
    66 ifeq ($(MACHINE),msim)
    67         RD_DRVS_ESSENTIAL += \
    68                 platform/msim \
    69                 block/ddisk
    70 endif
    71 
    7266SOURCES = \
    7367        arch/$(BARCH)/src/asm.S \
  • contrib/conf/msim.conf

    r94e46c9 ra25d893  
    1717add dkeyboard keyboard 0x10000000 2
    1818add dorder order 0x10000100 5
    19 
    20 add ddisk disk 0x10000200 6
    21 disk fmap "hdisk.img"
    22 
  • contrib/qfs/qfs.sh

    r94e46c9 ra25d893  
    2929#
    3030
    31 VERSION=2.3.0
     31VERSION=2.2.0
    3232BASENAME=qemu-${VERSION}
    3333BASENAME_MASTER=qemu-master
     
    3636URL=http://wiki.qemu-project.org/download/${TARBALL}
    3737REPO=git://git.qemu.org/qemu.git
    38 MD5="2fab3ea4460de9b57192e5b8b311f221"
     38MD5="f7a5e2da22d057eb838a91da7aff43c8"
    3939
    4040if [ "$1" == "--master" ]; then
  • defaults/arm32/integratorcp/Makefile.config

    r94e46c9 ra25d893  
    11# Machine type
    22MACHINE = integratorcp
    3 
    4 # Barebone build with essential binaries only
    5 CONFIG_BAREBONE = y
    6 
  • kernel/arch/mips32/include/arch/drivers/msim.h

    r94e46c9 ra25d893  
    3939#define MSIM_VIDEORAM     0x90000000
    4040#define MSIM_KBD_ADDRESS  0x90000000
    41 
    4241#define MSIM_KBD_IRQ      2
    43 #define MSIM_DDISK_IRQ    6
    4442
    4543#endif
  • kernel/arch/mips32/src/mach/msim/msim.c

    r94e46c9 ra25d893  
    6262void msim_init(void)
    6363{
    64         cp0_unmask_int(MSIM_DDISK_IRQ);
    6564}
    6665
  • tools/toolchain.sh

    r94e46c9 ra25d893  
    513513        PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" ./configure \
    514514                "--target=${TARGET}" \
    515                 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \
    516                 --enable-werror=no
     515                "--prefix=${PREFIX}" "--program-prefix=${TARGET}-"
    517516        check_error $? "Error configuring GDB."
    518517       
  • uspace/Makefile

    r94e46c9 ra25d893  
    9494        app/wavplay \
    9595        app/websrv \
    96         app/wifi_supplicant \
    9796        srv/audio/hound \
    9897        srv/clipboard \
     
    142141        drv/block/ahci \
    143142        drv/block/ata_bd \
    144         drv/block/ddisk \
    145143        drv/char/i8042 \
    146144        drv/char/pl050 \
     
    164162        drv/nic/rtl8139 \
    165163        drv/nic/rtl8169 \
    166         drv/nic/ar9271 \
    167164        drv/platform/icp
    168165
     
    182179
    183180ifeq ($(UARCH), $(filter $(UARCH),mips32 mips32eb))
    184 ifeq ($(MACHINE),msim)
    185         DIRS += \
    186                 drv/platform/msim
    187 else
    188181        DIRS += \
    189182                drv/platform/malta \
    190183                drv/bus/pci/pciintel \
    191184                drv/bus/isa
    192 endif
    193185endif
    194186
     
    219211        lib/fs \
    220212        lib/block \
    221         lib/crypto \
    222213        lib/clui \
    223214        lib/fmtutil \
     
    250241        lib/posix \
    251242        lib/mbr \
    252         lib/gpt \
    253         lib/ieee80211
     243        lib/gpt
    254244
    255245LIBC_BUILD = $(addsuffix .build,$(LIBC))
  • uspace/Makefile.common

    r94e46c9 ra25d893  
    120120LIBPOSIX_PREFIX = $(LIB_PREFIX)/posix
    121121
    122 LIBCRYPTO_PREFIX = $(LIB_PREFIX)/crypto
    123122LIBBLOCK_PREFIX = $(LIB_PREFIX)/block
    124123LIBFS_PREFIX = $(LIB_PREFIX)/fs
     
    144143LIBNET_PREFIX = $(LIB_PREFIX)/net
    145144LIBNIC_PREFIX = $(LIB_PREFIX)/nic
    146 LIBIEEE80211_PREFIX = $(LIB_PREFIX)/ieee80211
    147145LIBMINIX_PREFIX = $(LIB_PREFIX)/minix
    148146LIBCOMPRESS_PREFIX = $(LIB_PREFIX)/compress
  • uspace/app/bdsh/cmds/modules/cat/cat.c

    r94e46c9 ra25d893  
    324324        argc = cli_count_args(argv);
    325325
    326         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     326        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    327327                c = getopt_long(argc, argv, "xhvmH:t:b:s:n", long_options, &opt_ind);
    328328                switch (c) {
  • uspace/app/bdsh/cmds/modules/cmp/cmp.c

    r94e46c9 ra25d893  
    130130        argc = cli_count_args(argv);
    131131
    132         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     132        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    133133                c = getopt_long(argc, argv, "hv", long_options, &opt_ind);
    134134                switch (c) {
  • uspace/app/bdsh/cmds/modules/cp/cp.c

    r94e46c9 ra25d893  
    457457        argc = cli_count_args(argv);
    458458
    459         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     459        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    460460                c = getopt_long(argc, argv, "hvVfirb:", long_options, &opt_ind);
    461461                switch (c) {
  • uspace/app/bdsh/cmds/modules/ls/ls.c

    r94e46c9 ra25d893  
    362362        argc = cli_count_args(argv);
    363363       
    364         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     364        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    365365                c = getopt_long(argc, argv, "hur", long_options, &opt_ind);
    366366                switch (c) {
  • uspace/app/bdsh/cmds/modules/mkdir/mkdir.c

    r94e46c9 ra25d893  
    173173        argc = cli_count_args(argv);
    174174
    175         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     175        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    176176                c = getopt_long(argc, argv, "pvhVfm:", long_options, &opt_ind);
    177177                switch (c) {
  • uspace/app/bdsh/cmds/modules/mkfile/mkfile.c

    r94e46c9 ra25d893  
    126126        argc = cli_count_args(argv);
    127127
    128         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     128        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    129129                c = getopt_long(argc, argv, "ps:h", long_options, &opt_ind);
    130130                switch (c) {
  • uspace/app/bdsh/cmds/modules/mount/mount.c

    r94e46c9 ra25d893  
    118118        argc = cli_count_args(argv);
    119119
    120         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     120        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    121121                c = getopt_long(argc, argv, "i:h", long_options, &opt_ind);
    122122                switch (c) {
  • uspace/app/bdsh/cmds/modules/rm/rm.c

    r94e46c9 ra25d893  
    261261        }
    262262
    263         for (c = 0, optreset = 1, optind = 0, opt_ind = 0; c != -1;) {
     263        for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
    264264                c = getopt_long(argc, argv, "hvrfs", long_options, &opt_ind);
    265265                switch (c) {
  • uspace/app/bdsh/cmds/modules/touch/touch.c

    r94e46c9 ra25d893  
    9090        DIR *dirp;
    9191       
    92         for (c = 0, optreset = 1, optind = 0, longind = 0; c != -1; ) {
     92        for (c = 0, optind = 0, longind = 0; c != -1; ) {
    9393                c = getopt_long(argc, argv, "c", long_options, &longind);
    9494                switch (c) {
  • uspace/app/wavplay/drec.c

    r94e46c9 ra25d893  
    4747
    4848
    49 #define BUFFER_PARTS   16
     49#define BUFFER_PARTS   2
    5050
    5151/** Recording format */
     
    103103                        printf("Recording terminated\n");
    104104                        record = false;
    105                         break;
    106105                case PCM_EVENT_FRAMES_CAPTURED:
    107106                        printf("%" PRIun " frames\n", IPC_GET_ARG1(call));
     107                        async_answer_0(callid, EOK);
    108108                        break;
    109109                default:
     
    111111                        async_answer_0(callid, ENOTSUP);
    112112                        continue;
    113                 }
    114 
    115                 if (!record) {
    116                         async_answer_0(callid, EOK);
    117                         break;
     113
    118114                }
    119115
     
    160156        printf("\n");
    161157        audio_pcm_stop_capture(rec->device);
    162         /* XXX Control returns even before we can be sure callbacks finished */
    163         printf("Delay before playback termination\n");
    164         async_usleep(1000000);
    165         printf("Terminate playback\n");
    166158}
    167159
  • uspace/app/wavplay/main.c

    r94e46c9 ra25d893  
    308308                        if (direct) {
    309309                                drecord(device, file);
    310                                 continue;
    311310                        } else {
    312311                                printf("Indirect recording is not supported "
  • uspace/app/wavplay/wave.c

    r94e46c9 ra25d893  
    116116                *channels = uint16_t_le2host(header->channels);
    117117        if (format) {
    118                 const unsigned size = uint16_t_le2host(header->sample_size);
     118                const unsigned size = uint32_t_le2host(header->sample_size);
    119119                switch (size) {
    120120                case 8: *format = PCM_SAMPLE_UINT8; break;
     
    157157        header->channels = host2uint32_t_le(format.channels);
    158158        header->sample_size =
    159             host2uint16_t_le(pcm_sample_format_size(format.sample_format) * 8);
     159            host2uint32_t_le(pcm_sample_format_size(format.sample_format));
    160160}
    161161/**
  • uspace/drv/audio/hdaudio/codec.c

    r94e46c9 ra25d893  
    437437        }
    438438
    439         if ((pcaps & BIT_V(uint32_t, pwc_input)) != 0) {
    440                 ddf_msg(LVL_NOTE, "PIN %d will enable input", aw);
    441                 pctl = pctl | BIT_V(uint8_t, pctl_in_enable);
    442         }
    443 
    444439        if ((pcaps & BIT_V(uint32_t, pwc_hpd)) != 0) {
    445440                ddf_msg(LVL_NOTE, "PIN %d will enable headphone drive", aw);
     
    508503        codec->hda = hda;
    509504        codec->address = address;
    510         codec->in_aw = -1;
    511505
    512506        rc = hda_get_subnc(codec, 0, &sfg, &nfg);
     
    593587                                ddf_msg(LVL_NOTE, "Output widget %d: rates=0x%x formats=0x%x",
    594588                                    aw, rates, formats);
    595                         } else if (awtype == awt_audio_input) {
    596                                 if (codec->in_aw < 0) {
    597                                         ddf_msg(LVL_NOTE, "Selected input "
    598                                             "widget %d\n", aw);
    599                                         codec->in_aw = aw;
    600                                 } else {
    601                                         ddf_msg(LVL_NOTE, "Ignoring input "
    602                                             "widget %d\n", aw);
    603                                 }
    604 
    605                                 rc = hda_get_supp_rates(codec, aw, &rates);
    606                                 if (rc != EOK)
    607                                         goto error;
    608 
    609                                 rc = hda_get_supp_formats(codec, aw, &formats);
    610                                 if (rc != EOK)
    611                                         goto error;
    612 
    613                                 ddf_msg(LVL_NOTE, "Input widget %d: rates=0x%x formats=0x%x",
    614                                     aw, rates, formats);
    615589                        }
    616590
     
    649623                /* Configure converter */
    650624
    651                 ddf_msg(LVL_NOTE, "Configure output converter format");
     625                ddf_msg(LVL_NOTE, "Configure converter format");
    652626                rc = hda_set_converter_fmt(codec, out_aw, stream->fmt);
    653627                if (rc != EOK)
    654628                        goto error;
    655629
    656                 ddf_msg(LVL_NOTE, "Configure output converter stream, channel");
     630                ddf_msg(LVL_NOTE, "Configure converter stream, channel");
    657631                rc = hda_set_converter_ctl(codec, out_aw, stream->sid, 0);
    658632                if (rc != EOK)
    659633                        goto error;
    660634        }
    661 
    662         return EOK;
    663 error:
    664         return rc;
    665 }
    666 
    667 int hda_in_converter_setup(hda_codec_t *codec, hda_stream_t *stream)
    668 {
    669         int rc;
    670 
    671         /* Configure converter */
    672 
    673         ddf_msg(LVL_NOTE, "Configure input converter format");
    674         rc = hda_set_converter_fmt(codec, codec->in_aw, stream->fmt);
    675         if (rc != EOK)
    676                 goto error;
    677 
    678         ddf_msg(LVL_NOTE, "Configure input converter stream, channel");
    679         rc = hda_set_converter_ctl(codec, codec->in_aw, stream->sid, 0);
    680         if (rc != EOK)
    681                 goto error;
    682635
    683636        return EOK;
  • uspace/drv/audio/hdaudio/codec.h

    r94e46c9 ra25d893  
    4747        int out_aw_num;
    4848        int out_aw_sel;
    49         int in_aw;
    5049} hda_codec_t;
    5150
     
    5352extern void hda_codec_fini(hda_codec_t *);
    5453extern int hda_out_converter_setup(hda_codec_t *, hda_stream_t *);
    55 extern int hda_in_converter_setup(hda_codec_t *, hda_stream_t *);
    5654
    5755#endif
  • uspace/drv/audio/hdaudio/hdactl.c

    r94e46c9 ra25d893  
    562562        ctl->bss = BIT_RANGE_EXTRACT(uint16_t, gcap_bss_h, gcap_bss_l, gcap);
    563563        ddf_msg(LVL_NOTE, "GCAP: 0x%x (64OK=%d)", gcap, ctl->ok64bit);
    564         ddf_msg(LVL_NOTE, "iss: %d, oss: %d, bss: %d\n",
    565             ctl->iss, ctl->oss, ctl->bss);
     564
    566565        /* Give codecs enough time to enumerate themselves */
    567566        async_usleep(codec_enum_wait_us);
  • uspace/drv/audio/hdaudio/hdaudio.c

    r94e46c9 ra25d893  
    385385                        hda_pcm_event(hda, PCM_EVENT_FRAMES_PLAYED);
    386386                        hda_pcm_event(hda, PCM_EVENT_FRAMES_PLAYED);
    387                 } else if (hda->capturing) {
    388                         hda_pcm_event(hda, PCM_EVENT_FRAMES_CAPTURED);
    389                         hda_pcm_event(hda, PCM_EVENT_FRAMES_CAPTURED);
    390                         hda_pcm_event(hda, PCM_EVENT_FRAMES_CAPTURED);
    391                         hda_pcm_event(hda, PCM_EVENT_FRAMES_CAPTURED);
    392387                }
    393 
    394388                hda_unlock(hda);
    395389        }
  • uspace/drv/audio/hdaudio/hdaudio.h

    r94e46c9 ra25d893  
    5555        struct hda_ctl *ctl;
    5656        struct hda_stream *pcm_stream;
    57         struct hda_stream_buffers *pcm_buffers;
    5857        bool playing;
    59         bool capturing;
    6058} hda_t;
    6159
  • uspace/drv/audio/hdaudio/pcm_iface.c

    r94e46c9 ra25d893  
    100100static unsigned hda_query_cap(ddf_fun_t *fun, audio_cap_t cap)
    101101{
    102         hda_t *hda = fun_to_hda(fun);
    103 
    104102        ddf_msg(LVL_NOTE, "hda_query_cap(%d)", cap);
    105103        switch (cap) {
    106104        case AUDIO_CAP_PLAYBACK:
    107105        case AUDIO_CAP_INTERRUPT:
    108                 /* XXX Only if we have an output converter */
    109106                return 1;
     107        case AUDIO_CAP_BUFFER_POS:
    110108        case AUDIO_CAP_CAPTURE:
    111                 /* Yes if we have an input converter */
    112                 return hda->ctl->codec->in_aw >= 0;
    113         case AUDIO_CAP_BUFFER_POS:
    114109                return 0;
    115110        case AUDIO_CAP_MAX_BUFFER:
     
    153148{
    154149        hda_t *hda = fun_to_hda(fun);
    155         int rc;
    156150
    157151        hda_lock(hda);
    158152
    159153        ddf_msg(LVL_NOTE, "hda_get_buffer(): hda=%p", hda);
    160         if (hda->pcm_buffers != NULL) {
    161                 hda_unlock(hda);
    162                 return EBUSY;
    163         }
    164 
    165         ddf_msg(LVL_NOTE, "hda_get_buffer() - allocate stream buffers");
    166         rc = hda_stream_buffers_alloc(hda, &hda->pcm_buffers);
    167         if (rc != EOK) {
    168                 assert(rc == ENOMEM);
    169                 hda_unlock(hda);
    170                 return ENOMEM;
    171         }
    172 
    173         ddf_msg(LVL_NOTE, "hda_get_buffer() - fill info");
    174         /* XXX This is only one buffer */
    175         *buffer = hda->pcm_buffers->buf[0];
    176         *size = hda->pcm_buffers->bufsize * hda->pcm_buffers->nbuffers;
    177 
    178         ddf_msg(LVL_NOTE, "hda_get_buffer() returing EOK, buffer=%p, size=%zu",
    179             *buffer, *size);
    180 
    181         hda_unlock(hda);
    182         return EOK;
    183 }
    184 
    185 static int hda_get_buffer_position(ddf_fun_t *fun, size_t *pos)
    186 {
    187         ddf_msg(LVL_NOTE, "hda_get_buffer_position()");
    188         return ENOTSUP;
    189 }
    190 
    191 static int hda_set_event_session(ddf_fun_t *fun, async_sess_t *sess)
    192 {
    193         hda_t *hda = fun_to_hda(fun);
    194 
    195         ddf_msg(LVL_NOTE, "hda_set_event_session()");
    196         hda_lock(hda);
    197         hda->ev_sess = sess;
    198         hda_unlock(hda);
    199 
    200         return EOK;
    201 }
    202 
    203 static async_sess_t *hda_get_event_session(ddf_fun_t *fun)
    204 {
    205         hda_t *hda = fun_to_hda(fun);
    206         async_sess_t *sess;
    207 
    208         ddf_msg(LVL_NOTE, "hda_get_event_session()");
    209 
    210         hda_lock(hda);
    211         sess = hda->ev_sess;
    212         hda_unlock(hda);
    213 
    214         return sess;
    215 }
    216 
    217 static int hda_release_buffer(ddf_fun_t *fun)
    218 {
    219         hda_t *hda = fun_to_hda(fun);
    220 
    221         hda_lock(hda);
    222 
    223         ddf_msg(LVL_NOTE, "hda_release_buffer()");
    224         if (hda->pcm_buffers == NULL) {
    225                 hda_unlock(hda);
    226                 return EINVAL;
    227         }
    228 
    229         hda_stream_buffers_free(hda->pcm_buffers);
    230         hda->pcm_buffers = NULL;
    231 
    232         hda_unlock(hda);
    233         return EOK;
    234 }
    235 
    236 static int hda_start_playback(ddf_fun_t *fun, unsigned frames,
    237     unsigned channels, unsigned rate, pcm_sample_format_t format)
    238 {
    239         hda_t *hda = fun_to_hda(fun);
    240         int rc;
    241 
    242         ddf_msg(LVL_NOTE, "hda_start_playback()");
    243         hda_lock(hda);
    244 
    245154        if (hda->pcm_stream != NULL) {
    246155                hda_unlock(hda);
     
    253162        fmt = (fmt_base_44khz << fmt_base) | (fmt_bits_16 << fmt_bits_l) | 1;
    254163
    255         ddf_msg(LVL_NOTE, "hda_start_playback() - create output stream");
    256         hda->pcm_stream = hda_stream_create(hda, sdir_output, hda->pcm_buffers,
    257             fmt);
     164        ddf_msg(LVL_NOTE, "hda_get_buffer() - create stream");
     165        hda->pcm_stream = hda_stream_create(hda, sdir_output, fmt);
    258166        if (hda->pcm_stream == NULL) {
    259167                hda_unlock(hda);
    260168                return EIO;
    261169        }
     170
     171        ddf_msg(LVL_NOTE, "hda_get_buffer() - fill info");
     172        /* XXX This is only one buffer */
     173        *buffer = hda->pcm_stream->buf[0];
     174        *size = hda->pcm_stream->bufsize * hda->pcm_stream->nbuffers;
     175
     176        ddf_msg(LVL_NOTE, "hda_get_buffer() retturing EOK, buffer=%p, size=%zu",
     177            *buffer, *size);
     178
     179        hda_unlock(hda);
     180        return EOK;
     181}
     182
     183static int hda_get_buffer_position(ddf_fun_t *fun, size_t *pos)
     184{
     185        ddf_msg(LVL_NOTE, "hda_get_buffer_position()");
     186        return ENOTSUP;
     187}
     188
     189static int hda_set_event_session(ddf_fun_t *fun, async_sess_t *sess)
     190{
     191        hda_t *hda = fun_to_hda(fun);
     192
     193        ddf_msg(LVL_NOTE, "hda_set_event_session()");
     194        hda_lock(hda);
     195        hda->ev_sess = sess;
     196        hda_unlock(hda);
     197
     198        return EOK;
     199}
     200
     201static async_sess_t *hda_get_event_session(ddf_fun_t *fun)
     202{
     203        hda_t *hda = fun_to_hda(fun);
     204        async_sess_t *sess;
     205
     206        ddf_msg(LVL_NOTE, "hda_get_event_session()");
     207
     208        hda_lock(hda);
     209        sess = hda->ev_sess;
     210        hda_unlock(hda);
     211
     212        return sess;
     213}
     214
     215static int hda_release_buffer(ddf_fun_t *fun)
     216{
     217        hda_t *hda = fun_to_hda(fun);
     218
     219        hda_lock(hda);
     220
     221        ddf_msg(LVL_NOTE, "hda_release_buffer()");
     222        if (hda->pcm_stream == NULL) {
     223                hda_unlock(hda);
     224                return EINVAL;
     225        }
     226
     227        hda_stream_destroy(hda->pcm_stream);
     228        hda->pcm_stream = NULL;
     229
     230        hda_unlock(hda);
     231        return EOK;
     232}
     233
     234static int hda_start_playback(ddf_fun_t *fun, unsigned frames,
     235    unsigned channels, unsigned rate, pcm_sample_format_t format)
     236{
     237        hda_t *hda = fun_to_hda(fun);
     238        int rc;
     239
     240        ddf_msg(LVL_NOTE, "hda_start_playback()");
     241        hda_lock(hda);
    262242
    263243        rc = hda_out_converter_setup(hda->ctl->codec, hda->pcm_stream);
    264244        if (rc != EOK) {
    265                 hda_stream_destroy(hda->pcm_stream);
    266                 hda->pcm_stream = NULL;
    267245                hda_unlock(hda);
    268246                return rc;
    269247        }
    270248
     249        hda_stream_start(hda->pcm_stream);
    271250        hda->playing = true;
    272         hda_stream_start(hda->pcm_stream);
    273251        hda_unlock(hda);
    274252        return EOK;
     
    284262        hda_stream_reset(hda->pcm_stream);
    285263        hda->playing = false;
    286         hda_stream_destroy(hda->pcm_stream);
    287         hda->pcm_stream = NULL;
    288 
    289264        hda_unlock(hda);
    290265
     
    296271    unsigned rate, pcm_sample_format_t format)
    297272{
    298         hda_t *hda = fun_to_hda(fun);
    299         int rc;
    300 
    301273        ddf_msg(LVL_NOTE, "hda_start_capture()");
    302         hda_lock(hda);
    303 
    304         if (hda->pcm_stream != NULL) {
    305                 hda_unlock(hda);
    306                 return EBUSY;
    307         }
    308 
    309         /* XXX Choose appropriate parameters */
    310         uint32_t fmt;
    311         /* 48 kHz, 16-bits, 1 channel */
    312         fmt = (fmt_base_44khz << fmt_base) | (fmt_bits_16 << fmt_bits_l) | 1;
    313 
    314         ddf_msg(LVL_NOTE, "hda_start_capture() - create input stream");
    315         hda->pcm_stream = hda_stream_create(hda, sdir_input, hda->pcm_buffers,
    316             fmt);
    317         if (hda->pcm_stream == NULL) {
    318                 hda_unlock(hda);
    319                 return EIO;
    320         }
    321 
    322         rc = hda_in_converter_setup(hda->ctl->codec, hda->pcm_stream);
    323         if (rc != EOK) {
    324                 hda_stream_destroy(hda->pcm_stream);
    325                 hda->pcm_stream = NULL;
    326                 hda_unlock(hda);
    327                 return rc;
    328         }
    329 
    330         hda->capturing = true;
    331         hda_stream_start(hda->pcm_stream);
    332         hda_unlock(hda);
    333         return EOK;
     274        return ENOTSUP;
    334275}
    335276
    336277static int hda_stop_capture(ddf_fun_t *fun, bool immediate)
    337278{
    338         hda_t *hda = fun_to_hda(fun);
    339 
    340279        ddf_msg(LVL_NOTE, "hda_stop_capture()");
    341         hda_lock(hda);
    342         hda_stream_stop(hda->pcm_stream);
    343         hda_stream_reset(hda->pcm_stream);
    344         hda->capturing = false;
    345         hda_stream_destroy(hda->pcm_stream);
    346         hda->pcm_stream = NULL;
    347         hda_unlock(hda);
    348 
    349         hda_pcm_event(hda, PCM_EVENT_CAPTURE_TERMINATED);
    350         return EOK;
     280        return ENOTSUP;
    351281}
    352282
  • uspace/drv/audio/hdaudio/stream.c

    r94e46c9 ra25d893  
    4848#include "stream.h"
    4949
    50 int hda_stream_buffers_alloc(hda_t *hda, hda_stream_buffers_t **rbufs)
     50static int hda_stream_buffers_alloc(hda_stream_t *stream)
    5151{
    5252        void *bdl;
    5353        void *buffer;
    5454        uintptr_t buffer_phys;
    55         hda_stream_buffers_t *bufs = NULL;
    5655        size_t i;
    5756//      size_t j, k;
    5857        int rc;
    5958
    60         bufs = calloc(1, sizeof(hda_stream_buffers_t));
    61         if (bufs == NULL) {
    62                 rc = ENOMEM;
    63                 goto error;
    64         }
    65 
    66         bufs->nbuffers = 4;
    67         bufs->bufsize = 16384;
     59        stream->nbuffers = 4;
     60        stream->bufsize = 16384;
    6861
    6962        /*
     
    7265         */
    7366        bdl = AS_AREA_ANY;
    74         rc = dmamem_map_anonymous(bufs->nbuffers * sizeof(hda_buffer_desc_t),
    75             hda->ctl->ok64bit ? 0 : DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
    76             0, &bufs->bdl_phys, &bdl);
     67        rc = dmamem_map_anonymous(stream->nbuffers * sizeof(hda_buffer_desc_t),
     68            stream->hda->ctl->ok64bit ? 0 : DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
     69            0, &stream->bdl_phys, &bdl);
    7770        if (rc != EOK)
    7871                goto error;
    7972
    80         bufs->bdl = bdl;
     73        stream->bdl = bdl;
    8174
    8275        /* Allocate arrays of buffer pointers */
    8376
    84         bufs->buf = calloc(bufs->nbuffers, sizeof(void *));
    85         if (bufs->buf == NULL)
    86                 goto error;
    87 
    88         bufs->buf_phys = calloc(bufs->nbuffers, sizeof(uintptr_t));
    89         if (bufs->buf_phys == NULL)
     77        stream->buf = calloc(stream->nbuffers, sizeof(void *));
     78        if (stream->buf == NULL)
     79                goto error;
     80
     81        stream->buf_phys = calloc(stream->nbuffers, sizeof(uintptr_t));
     82        if (stream->buf_phys == NULL)
    9083                goto error;
    9184
    9285        /* Allocate buffers */
    9386/*
    94         for (i = 0; i < bufs->nbuffers; i++) {
     87        for (i = 0; i < stream->nbuffers; i++) {
    9588                buffer = AS_AREA_ANY;
    96                 rc = dmamem_map_anonymous(bufs->bufsize,
    97                     bufs->hda->ctl->ok64bit ? 0 : DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
     89                rc = dmamem_map_anonymous(stream->bufsize,
     90                    stream->hda->ctl->ok64bit ? 0 : DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
    9891                    0, &buffer_phys, &buffer);
    9992                if (rc != EOK)
     
    10396                    (unsigned long long)buffer_phys, buffer);
    10497
    105                 bufs->buf[i] = buffer;
    106                 bufs->buf_phys[i] = buffer_phys;
     98                stream->buf[i] = buffer;
     99                stream->buf_phys[i] = buffer_phys;
    107100
    108101                k = 0;
    109                 for (j = 0; j < bufs->bufsize / 2; j++) {
    110                         int16_t *bp = bufs->buf[i];
     102                for (j = 0; j < stream->bufsize / 2; j++) {
     103                        int16_t *bp = stream->buf[i];
    111104                        bp[j] = (k > 128) ? -100 : 100;
    112105                        ++k;
     
    118111        /* audio_pcm_iface requires a single contiguous buffer */
    119112        buffer = AS_AREA_ANY;
    120         rc = dmamem_map_anonymous(bufs->bufsize * bufs->nbuffers,
    121             hda->ctl->ok64bit ? 0 : DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
     113        rc = dmamem_map_anonymous(stream->bufsize * stream->nbuffers,
     114            stream->hda->ctl->ok64bit ? 0 : DMAMEM_4GiB, AS_AREA_READ | AS_AREA_WRITE,
    122115            0, &buffer_phys, &buffer);
    123116        if (rc != EOK) {
     
    126119        }
    127120
    128         for (i = 0; i < bufs->nbuffers; i++) {
    129                 bufs->buf[i] = buffer + i * bufs->bufsize;
    130                 bufs->buf_phys[i] = buffer_phys + i * bufs->bufsize;
     121        for (i = 0; i < stream->nbuffers; i++) {
     122                stream->buf[i] = buffer + i * stream->bufsize;
     123                stream->buf_phys[i] = buffer_phys + i * stream->bufsize;
    131124
    132125                ddf_msg(LVL_NOTE, "Stream buf phys=0x%llx virt=%p",
    133                     (long long unsigned)(uintptr_t)bufs->buf[i],
    134                     (void *)bufs->buf_phys[i]);
     126                    (long long unsigned)(uintptr_t)stream->buf[i],
     127                    (void *)stream->buf_phys[i]);
    135128/*              k = 0;
    136                 for (j = 0; j < bufs->bufsize / 2; j++) {
    137                         int16_t *bp = bufs->buf[i];
     129                for (j = 0; j < stream->bufsize / 2; j++) {
     130                        int16_t *bp = stream->buf[i];
    138131                        bp[j] = (k > 128) ? -10000 : 10000;
    139132                        ++k;
     
    145138
    146139        /* Fill in BDL */
    147         for (i = 0; i < bufs->nbuffers; i++) {
    148                 bufs->bdl[i].address = host2uint64_t_le(bufs->buf_phys[i]);
    149                 bufs->bdl[i].length = host2uint32_t_le(bufs->bufsize);
    150                 bufs->bdl[i].flags = BIT_V(uint32_t, bdf_ioc);
    151         }
    152 
    153         *rbufs = bufs;
     140        for (i = 0; i < stream->nbuffers; i++) {
     141                stream->bdl[i].address = host2uint64_t_le(stream->buf_phys[i]);
     142                stream->bdl[i].length = host2uint32_t_le(stream->bufsize);
     143                stream->bdl[i].flags = BIT_V(uint32_t, bdf_ioc);
     144        }
     145
    154146        return EOK;
    155147error:
    156         hda_stream_buffers_free(bufs);
    157148        return ENOMEM;
    158149}
    159150
    160 void hda_stream_buffers_free(hda_stream_buffers_t *bufs)
    161 {
    162         if (bufs == NULL)
    163                 return;
    164 
    165         /* XXX */
    166         free(bufs);
    167 }
    168 
    169151static void hda_stream_desc_configure(hda_stream_t *stream)
    170152{
    171153        hda_sdesc_regs_t *sdregs;
    172         hda_stream_buffers_t *bufs = stream->buffers;
    173154        uint8_t ctl1;
    174155        uint8_t ctl3;
     
    180161        hda_reg8_write(&sdregs->ctl3, ctl3);
    181162        hda_reg8_write(&sdregs->ctl1, ctl1);
    182         hda_reg32_write(&sdregs->cbl, bufs->nbuffers * bufs->bufsize);
    183         hda_reg16_write(&sdregs->lvi, bufs->nbuffers - 1);
     163        hda_reg32_write(&sdregs->cbl, stream->nbuffers * stream->bufsize);
     164        hda_reg16_write(&sdregs->lvi, stream->nbuffers - 1);
    184165        hda_reg16_write(&sdregs->fmt, stream->fmt);
    185         hda_reg32_write(&sdregs->bdpl, LOWER32(bufs->bdl_phys));
    186         hda_reg32_write(&sdregs->bdpu, UPPER32(bufs->bdl_phys));
     166        hda_reg32_write(&sdregs->bdpl, LOWER32(stream->bdl_phys));
     167        hda_reg32_write(&sdregs->bdpu, UPPER32(stream->bdl_phys));
    187168}
    188169
     
    224205
    225206hda_stream_t *hda_stream_create(hda_t *hda, hda_stream_dir_t dir,
    226     hda_stream_buffers_t *bufs, uint32_t fmt)
     207    uint32_t fmt)
    227208{
    228209        hda_stream_t *stream;
    229         uint8_t sdid;
     210        int rc;
    230211
    231212        stream = calloc(1, sizeof(hda_stream_t));
     
    233214                return NULL;
    234215
    235         sdid = 0;
    236 
    237         switch (dir) {
    238         case sdir_input:
    239                 sdid = 0; /* XXX Allocate - first input SDESC */
    240                 break;
    241         case sdir_output:
    242                 sdid = hda->ctl->iss; /* XXX Allocate - First output SDESC */
    243                 break;
    244         case sdir_bidi:
    245                 sdid = hda->ctl->iss + hda->ctl->oss; /* XXX Allocate - First bidi SDESC */
    246                 break;
    247         }
    248 
    249216        stream->hda = hda;
    250217        stream->dir = dir;
    251218        stream->sid = 1; /* XXX Allocate this */
    252         stream->sdid = sdid;
     219        stream->sdid = hda->ctl->iss; /* XXX Allocate - First output SDESC */
    253220        stream->fmt = fmt;
    254         stream->buffers = bufs;
    255221
    256222        ddf_msg(LVL_NOTE, "snum=%d sdidx=%d", stream->sid, stream->sdid);
     223
     224        ddf_msg(LVL_NOTE, "Allocate buffers");
     225        rc = hda_stream_buffers_alloc(stream);
     226        if (rc != EOK)
     227                goto error;
    257228
    258229        ddf_msg(LVL_NOTE, "Configure stream descriptor");
    259230        hda_stream_desc_configure(stream);
    260231        return stream;
     232error:
     233        return NULL;
    261234}
    262235
  • uspace/drv/audio/hdaudio/stream.h

    r94e46c9 ra25d893  
    4848} hda_stream_dir_t;
    4949
    50 typedef struct hda_stream_buffers {
     50typedef struct hda_stream {
     51        hda_t *hda;
     52        /** Stream ID */
     53        uint8_t sid;
     54        /** Stream descriptor index */
     55        uint8_t sdid;
     56        /** Direction */
     57        hda_stream_dir_t dir;
    5158        /** Number of buffers */
    5259        size_t nbuffers;
     
    6168        /** Physical addresses of buffers */
    6269        uintptr_t *buf_phys;
    63 } hda_stream_buffers_t;
    64 
    65 typedef struct hda_stream {
    66         hda_t *hda;
    67         /** Stream ID */
    68         uint8_t sid;
    69         /** Stream descriptor index */
    70         uint8_t sdid;
    71         /** Direction */
    72         hda_stream_dir_t dir;
    73         /** Buffers */
    74         hda_stream_buffers_t *buffers;
    7570        /** Stream format */
    7671        uint32_t fmt;
    7772} hda_stream_t;
    7873
    79 extern int hda_stream_buffers_alloc(hda_t *, hda_stream_buffers_t **);
    80 extern void hda_stream_buffers_free(hda_stream_buffers_t *);
    81 extern hda_stream_t *hda_stream_create(hda_t *, hda_stream_dir_t,
    82     hda_stream_buffers_t *, uint32_t);
     74extern hda_stream_t *hda_stream_create(hda_t *, hda_stream_dir_t, uint32_t);
    8375extern void hda_stream_destroy(hda_stream_t *);
    8476extern void hda_stream_start(hda_stream_t *);
  • uspace/drv/block/ata_bd/main.c

    r94e46c9 ra25d893  
    8181                rc = EINVAL;
    8282                goto error;
     83                return EINVAL;
    8384        }
    8485
  • uspace/drv/bus/isa/isa.c

    r94e46c9 ra25d893  
    245245        bool opened = false;
    246246        int fd;
    247         size_t len;
    248         ssize_t r;
     247        size_t len = 0;
    249248
    250249        fd = open(conf_path, O_RDONLY);
     
    270269        }
    271270
    272         r = read_all(fd, buf, len);
    273         if (r < 0) {
     271        if (0 >= read(fd, buf, len)) {
    274272                ddf_msg(LVL_ERROR, "Unable to read file '%s'.", conf_path);
    275273                goto cleanup;
  • uspace/drv/fb/amdm37x_dispc/amdm37x_dispc.c

    r94e46c9 ra25d893  
    282282                return ret;
    283283        }
    284         if (dispc->fb_data)
    285                 dmamem_unmap_anonymous(dispc->fb_data);
    286284       
    287         dispc->fb_data = buffer;
    288285        amdm37x_dispc_setup_fb(dispc->regs, x, y, bpp *8, (uint32_t)pa);
    289286        dispc->active_fb.idx = mode.index;
     
    293290        dispc->active_fb.bpp = bpp;
    294291        dispc->active_fb.pixel2visual = p2v;
     292        dispc->fb_data = buffer;
    295293        dispc->size = size;
    296294        assert(mode.index < 1);
    297295
     296        if (dispc->fb_data)
     297                dmamem_unmap_anonymous(dispc->fb_data);
    298298        return EOK;
    299299}
  • uspace/lib/c/generic/dhcp.c

    r94e46c9 ra25d893  
    8484}
    8585
    86 int dhcp_discover(sysarg_t link_id)
    87 {
    88         async_exch_t *exch = async_exchange_begin(dhcp_sess);
    89 
    90         int rc = async_req_1_0(exch, DHCP_DISCOVER, link_id);
    91         async_exchange_end(exch);
    92 
    93         return rc;
    94 }
    95 
    9686/** @}
    9787 */
  • uspace/lib/c/generic/irq.c

    r94e46c9 ra25d893  
    3535#include <ipc/irq.h>
    3636#include <libc.h>
    37 #include <stdlib.h>
    38 #include <macros.h>
    39 
    40 static irq_cmd_t default_cmds[] = {
    41         {
    42                 .cmd = CMD_ACCEPT
    43         }
    44 };
    45 
    46 static const irq_code_t default_ucode = {
    47         0,
    48         NULL,
    49         ARRAY_SIZE(default_cmds),
    50         default_cmds
    51 };
    5237
    5338/** Subscribe to IRQ notification.
     
    6449    const irq_code_t *ucode)
    6550{
    66         if (ucode == NULL)
    67                 ucode = &default_ucode;
    68        
    6951        return __SYSCALL4(SYS_IPC_IRQ_SUBSCRIBE, inr, devno, method,
    7052            (sysarg_t) ucode);
  • uspace/lib/c/include/inet/dhcp.h

    r94e46c9 ra25d893  
    4141extern int dhcp_link_add(sysarg_t);
    4242extern int dhcp_link_remove(sysarg_t);
    43 extern int dhcp_discover(sysarg_t);
    4443
    4544#endif
  • uspace/lib/c/include/ipc/dev_iface.h

    r94e46c9 ra25d893  
    4848        /** Network interface controller interface */
    4949        NIC_DEV_IFACE,
    50                
    51         /** IEEE 802.11 interface controller interface */
    52         IEEE80211_DEV_IFACE,
    5350       
    5451        /** Interface provided by any PCI device. */
  • uspace/lib/c/include/ipc/dhcp.h

    r94e46c9 ra25d893  
    4141typedef enum {
    4242        DHCP_LINK_ADD = IPC_FIRST_USER_METHOD,
    43         DHCP_LINK_REMOVE,
    44         DHCP_DISCOVER
     43        DHCP_LINK_REMOVE
    4544} dhcp_request_t;
    4645
  • uspace/lib/drv/Makefile

    r94e46c9 ra25d893  
    4848        generic/remote_char_dev.c \
    4949        generic/remote_nic.c \
    50         generic/remote_ieee80211.c \
    5150        generic/remote_usb.c \
    5251        generic/remote_pci.c \
  • uspace/lib/drv/generic/dev_iface.c

    r94e46c9 ra25d893  
    4646#include "remote_battery_dev.h"
    4747#include "remote_nic.h"
    48 #include "remote_ieee80211.h"
    4948#include "remote_usb.h"
    5049#include "remote_usbhc.h"
     
    6362                [CHAR_DEV_IFACE] = &remote_char_dev_iface,
    6463                [NIC_DEV_IFACE] = &remote_nic_iface,
    65                 [IEEE80211_DEV_IFACE] = &remote_ieee80211_iface,
    6664                [PCI_DEV_IFACE] = &remote_pci_iface,
    6765                [USB_DEV_IFACE] = &remote_usb_iface,
  • uspace/lib/drv/generic/interrupt.c

    r94e46c9 ra25d893  
    4444#include "private/driver.h"
    4545
     46static irq_cmd_t default_cmds[] = {
     47        {
     48                .cmd = CMD_ACCEPT
     49        }
     50};
     51
     52static const irq_code_t default_pseudocode = {
     53        0,
     54        NULL,
     55        ARRAY_SIZE(default_cmds),
     56        default_cmds
     57};
     58
    4659int register_interrupt_handler(ddf_dev_t *dev, int irq,
    4760    interrupt_handler_t *handler, const irq_code_t *pseudocode)
  • uspace/lib/ext4/libext4_directory.c

    r94e46c9 ra25d893  
    390390            (ext4_inode_has_flag(parent->inode, EXT4_INODE_FLAG_INDEX))) {
    391391                int rc = ext4_directory_dx_add_entry(parent, child, name);
    392 
     392               
    393393                /* Check if index is not corrupted */
    394                 if (rc != EXT4_ERR_BAD_DX_DIR)
    395                         return rc;
    396 
     394                if (rc != EXT4_ERR_BAD_DX_DIR) {
     395                        if (rc != EOK)
     396                                return rc;
     397                       
     398                        return EOK;
     399                }
     400               
    397401                /* Needed to clear dir index flag if corrupted */
    398402                ext4_inode_clear_flag(parent->inode, EXT4_INODE_FLAG_INDEX);
  • uspace/lib/ext4/libext4_extent.c

    r94e46c9 ra25d893  
    797797                        if (rc != EOK) {
    798798                                ext4_balloc_free_block(inode_ref, fblock);
    799                                 block_put(block);
    800799                                return rc;
    801800                        }
  • uspace/lib/ext4/libext4_filesystem.c

    r94e46c9 ra25d893  
    5353    enum cache_mode cmode)
    5454{
    55         ext4_superblock_t *temp_superblock = NULL;
    56 
    5755        fs->device = service_id;
    58 
     56       
    5957        /* Initialize block library (4096 is size of communication channel) */
    6058        int rc = block_init(EXCHANGE_SERIALIZE, fs->device, 4096);
    6159        if (rc != EOK)
    62                 goto err;
    63 
     60                return rc;
     61       
    6462        /* Read superblock from device to memory */
     63        ext4_superblock_t *temp_superblock;
    6564        rc = ext4_superblock_read_direct(fs->device, &temp_superblock);
    66         if (rc != EOK)
    67                 goto err_1;
    68 
     65        if (rc != EOK) {
     66                block_fini(fs->device);
     67                return rc;
     68        }
     69       
    6970        /* Read block size from superblock and check */
    7071        uint32_t block_size = ext4_superblock_get_block_size(temp_superblock);
    7172        if (block_size > EXT4_MAX_BLOCK_SIZE) {
    72                 rc = ENOTSUP;
    73                 goto err_1;
    74         }
    75 
     73                block_fini(fs->device);
     74                return ENOTSUP;
     75        }
     76       
    7677        /* Initialize block caching by libblock */
    7778        rc = block_cache_init(service_id, block_size, 0, cmode);
    78         if (rc != EOK)
    79                 goto err_1;
    80 
     79        if (rc != EOK) {
     80                block_fini(fs->device);
     81                return rc;
     82        }
     83       
    8184        /* Compute limits for indirect block levels */
    8285        uint32_t block_ids_per_block = block_size / sizeof(uint32_t);
     
    8992                    fs->inode_blocks_per_level[i];
    9093        }
    91 
     94       
    9295        /* Return loaded superblock */
    9396        fs->superblock = temp_superblock;
    94 
     97       
    9598        uint16_t state = ext4_superblock_get_state(fs->superblock);
    96 
     99       
    97100        if (((state & EXT4_SUPERBLOCK_STATE_VALID_FS) !=
    98101            EXT4_SUPERBLOCK_STATE_VALID_FS) ||
    99102            ((state & EXT4_SUPERBLOCK_STATE_ERROR_FS) ==
    100103            EXT4_SUPERBLOCK_STATE_ERROR_FS)) {
    101                 rc = ENOTSUP;
    102                 goto err_2;
    103         }
    104 
     104                block_cache_fini(fs->device);
     105                block_fini(fs->device);
     106                return ENOTSUP;
     107        }
     108       
    105109        /* Mark system as mounted */
    106110        ext4_superblock_set_state(fs->superblock, EXT4_SUPERBLOCK_STATE_ERROR_FS);
    107111        rc = ext4_superblock_write_direct(fs->device, fs->superblock);
    108         if (rc != EOK)
    109                 goto err_2;
    110 
     112        if (rc != EOK) {
     113                block_cache_fini(fs->device);
     114                block_fini(fs->device);
     115                return rc;
     116        }
     117       
    111118        uint16_t mnt_count = ext4_superblock_get_mount_count(fs->superblock);
    112119        ext4_superblock_set_mount_count(fs->superblock, mnt_count + 1);
    113 
     120       
    114121        return EOK;
    115 
    116 err_2:
    117         block_cache_fini(fs->device);
    118 err_1:
    119         block_fini(fs->device);
    120 err:
    121         if (temp_superblock)
    122                 ext4_superblock_release(temp_superblock);
    123         return rc;
    124122}
    125123
     
    847845                               
    848846                                rc = block_put(subblock);
    849                                 if (rc != EOK) {
    850                                         block_put(block);
     847                                if (rc != EOK)
    851848                                        return rc;
    852                                 }
    853849                        }
    854850                       
  • uspace/lib/ext4/libext4_superblock.c

    r94e46c9 ra25d893  
    11781178}
    11791179
    1180 /** Release the memory allocated for the superblock structure
    1181  *
    1182  * @param sb         Superblock to be freed
    1183  *
    1184  */
    1185 void ext4_superblock_release(ext4_superblock_t *sb)
    1186 {
    1187         free(sb);
    1188 }
    1189 
    11901180/** Check sanity of the superblock.
    11911181 *
  • uspace/lib/ext4/libext4_superblock.h

    r94e46c9 ra25d893  
    145145extern int ext4_superblock_read_direct(service_id_t, ext4_superblock_t **);
    146146extern int ext4_superblock_write_direct(service_id_t, ext4_superblock_t *);
    147 extern void ext4_superblock_release(ext4_superblock_t *);
    148147extern int ext4_superblock_check_sanity(ext4_superblock_t *);
    149148
  • uspace/srv/devman/drv_conn.c

    r94e46c9 ra25d893  
    173173        callid = async_get_call(&call);
    174174        if (DEVMAN_ADD_MATCH_ID != IPC_GET_IMETHOD(call)) {
    175                 log_msg(LOG_DEFAULT, LVL_ERROR,
     175                log_msg(LOG_DEFAULT, LVL_ERROR, 
    176176                    "Invalid protocol when trying to receive match id.");
    177                 async_answer_0(callid, EINVAL);
     177                async_answer_0(callid, EINVAL); 
    178178                delete_match_id(match_id);
    179179                return EINVAL;
     
    246246        if (ftype != fun_inner && ftype != fun_exposed) {
    247247                /* Unknown function type */
    248                 log_msg(LOG_DEFAULT, LVL_ERROR,
     248                log_msg(LOG_DEFAULT, LVL_ERROR, 
    249249                    "Unknown function type %d provided by driver.",
    250250                    (int) ftype);
     
    404404        fibril_rwlock_read_unlock(&device_tree.rwlock);
    405405       
    406         rc = fun_online(fun);
     406        rc = fun_offline(fun);
    407407        if (rc != EOK) {
    408408                fun_busy_unlock(fun);
  • uspace/srv/devman/fun.c

    r94e46c9 ra25d893  
    348348                loc_register_tree_function(fun, &device_tree);
    349349       
    350         fun->state = FUN_ON_LINE;
    351350        fibril_rwlock_write_unlock(&device_tree.rwlock);
    352351       
  • uspace/srv/locsrv/locsrv.c

    r94e46c9 ra25d893  
    13571357        cat = category_new("nic");
    13581358        categ_dir_add_cat(&cdir, cat);
    1359        
    1360         cat = category_new("ieee80211");
    1361         categ_dir_add_cat(&cdir, cat);
    13621359
    13631360        cat = category_new("visualizer");
  • uspace/srv/net/dhcp/dhcp.c

    r94e46c9 ra25d893  
    418418}
    419419
    420 static int dhcp_discover_proc(dhcp_link_t *dlink)
    421 {
    422         dlink->state = ds_selecting;
    423 
    424         int rc = dhcp_send_discover(dlink);
    425         if (rc != EOK)
    426                 return EIO;
    427 
    428         dlink->retries_left = dhcp_discover_retries;
    429        
    430         if ((dlink->timeout->state == fts_not_set) ||
    431             (dlink->timeout->state == fts_fired))
    432                 fibril_timer_set(dlink->timeout, dhcp_discover_timeout_val,
    433                     dhcpsrv_discover_timeout, dlink);
    434        
    435         return rc;
    436 }
    437 
    438420int dhcpsrv_link_add(service_id_t link_id)
    439421{
     
    477459        }
    478460
     461        dlink->state = ds_selecting;
     462
    479463        log_msg(LOG_DEFAULT, LVL_DEBUG, "Send DHCPDISCOVER");
    480         rc = dhcp_discover_proc(dlink);
     464        rc = dhcp_send_discover(dlink);
    481465        if (rc != EOK) {
    482466                log_msg(LOG_DEFAULT, LVL_ERROR, "Error sending DHCPDISCOVER.");
     
    485469                goto error;
    486470        }
     471
     472        dlink->retries_left = dhcp_discover_retries;
     473        fibril_timer_set(dlink->timeout, dhcp_discover_timeout_val,
     474            dhcpsrv_discover_timeout, dlink);
    487475
    488476        list_append(&dlink->links, &dhcp_links);
     
    501489}
    502490
    503 int dhcpsrv_discover(service_id_t link_id)
    504 {
    505         log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcpsrv_link_add(%zu)", link_id);
    506        
    507         dhcp_link_t *dlink = dhcpsrv_link_find(link_id);
    508        
    509         if (dlink == NULL) {
    510                 log_msg(LOG_DEFAULT, LVL_NOTE, "Link %zu doesn't exist",
    511                     link_id);
    512                 return EINVAL;
    513         }
    514        
    515         return dhcp_discover_proc(dlink);
    516 }
    517 
    518491static void dhcpsrv_recv_offer(dhcp_link_t *dlink, dhcp_offer_t *offer)
    519492{
     
    561534                return;
    562535        }
    563 
    564         /* XXX Work around multiple simultaneous sessions issue */
    565         dhcp_transport_fini(&dlink->dt);
    566536
    567537        log_msg(LOG_DEFAULT, LVL_NOTE, "%s: Successfully configured.",
  • uspace/srv/net/dhcp/dhcp.h

    r94e46c9 ra25d893  
    4343extern int dhcpsrv_link_add(service_id_t);
    4444extern int dhcpsrv_link_remove(service_id_t);
    45 extern int dhcpsrv_discover(service_id_t);
    4645
    4746#endif
  • uspace/srv/net/dhcp/main.c

    r94e46c9 ra25d893  
    109109}
    110110
    111 static void dhcp_discover_srv(ipc_callid_t callid, ipc_call_t *call)
    112 {
    113         sysarg_t link_id;
    114         int rc;
    115 
    116         log_msg(LOG_DEFAULT, LVL_DEBUG, "dhcp_discover_srv()");
    117 
    118         link_id = IPC_GET_ARG1(*call);
    119 
    120         rc = dhcpsrv_discover(link_id);
    121         async_answer_0(callid, rc);
    122 }
    123 
    124111static void dhcp_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    125112{
     
    146133                case DHCP_LINK_REMOVE:
    147134                        dhcp_link_remove_srv(callid, &call);
    148                         break;
    149                 case DHCP_DISCOVER:
    150                         dhcp_discover_srv(callid, &call);
    151135                        break;
    152136                default:
  • uspace/srv/net/dhcp/transport.c

    r94e46c9 ra25d893  
    9595        int rc;
    9696
    97         if (dt->fd < 0) {
    98                 /* Terminated */
    99                 return EIO;
    100         }
    101 
    10297        src_addr_size = sizeof(src_addr);
    10398        rc = recvfrom(dt->fd, msgbuf, MAX_MSG_SIZE, 0,
     
    171166{
    172167        closesocket(dt->fd);
    173         dt->fd = -1;
    174168}
    175169
Note: See TracChangeset for help on using the changeset viewer.