Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 878e181 in mainline


Ignore:
Timestamp:
2013-03-12T07:30:11Z (7 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
master
Children:
b92a0ee
Parents:
7f25c4e (diff), 623bab8f (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:

Merge mainline changes

Files:
4 added
15 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/include/arch/stack.h

    r7f25c4e r878e181  
    3737#define KERN_arm32_STACK_H_
    3838
     39#include <config.h>
     40
     41#define MEM_STACK_SIZE  STACK_SIZE
     42
    3943#define STACK_ITEM_SIZE         4
    4044
  • kernel/arch/ia64/include/arch/stack.h

    r7f25c4e r878e181  
    3636#define KERN_ia64_STACK_H_
    3737
     38#include <config.h>
     39
     40#define MEM_STACK_SIZE  (STACK_SIZE / 2)
     41
    3842#define STACK_ITEM_SIZE                 8
    3943#define STACK_ALIGNMENT                 16
  • kernel/arch/mips32/include/arch/stack.h

    r7f25c4e r878e181  
    3636#define KERN_mips32_STACK_H_
    3737
     38#include <config.h>
     39
     40#define MEM_STACK_SIZE  STACK_SIZE
     41
    3842#define STACK_ITEM_SIZE  4
    3943#define STACK_ALIGNMENT  8
  • kernel/arch/mips64/include/arch/stack.h

    r7f25c4e r878e181  
    3636#define KERN_mips64_STACK_H_
    3737
     38#include <config.h>
     39
     40#define MEM_STACK_SIZE  STACK_SIZE
     41
    3842#define STACK_ITEM_SIZE  8
    3943#define STACK_ALIGNMENT  8
  • kernel/arch/sparc64/include/arch/stack.h

    r7f25c4e r878e181  
    3636#define KERN_sparc64_STACK_H_
    3737
     38#include <config.h>
     39
     40#define MEM_STACK_SIZE  STACK_SIZE
     41
    3842#define STACK_ITEM_SIZE                 8
    3943
  • kernel/generic/src/interrupt/interrupt.c

    r7f25c4e r878e181  
    5454#include <proc/thread.h>
    5555#include <arch/cycle.h>
     56#include <arch/stack.h>
    5657#include <str.h>
    5758#include <trace.h>
     
    222223        /*
    223224         * The istate structure should be right at the bottom of the kernel
    224          * stack.
     225         * memory stack.
    225226         */
    226         return (istate_t *) ((uint8_t *)
    227             thread->kstack + STACK_SIZE - sizeof(istate_t));
     227        return (istate_t *) &thread->kstack[MEM_STACK_SIZE - sizeof(istate_t)];
    228228}
    229229
  • uspace/drv/char/i8042/main.c

    r7f25c4e r878e181  
    3636
    3737#include <libarch/inttypes.h>
     38#include <libarch/config.h>
    3839#include <ddf/driver.h>
    3940#include <device/hw_res_parsed.h>
     
    4243#include <ddf/log.h>
    4344#include <stdio.h>
     45#include <async.h>
    4446#include "i8042.h"
    4547
     
    152154        printf("%s: HelenOS PS/2 driver.\n", NAME);
    153155        ddf_log_init(NAME);
     156       
     157        /*
     158         * Alleviate the virtual memory / page table pressure caused by
     159         * interrupt storms when the default large stacks are used.
     160         */
     161        async_set_interrupt_handler_stack_size(PAGE_SIZE);
     162
    154163        return ddf_driver_main(&i8042_driver);
    155164}
  • uspace/lib/c/arch/mips32/include/libarch/stack.h

    • Property mode changed from 120000 to 100644
    r7f25c4e r878e181  
    1 ../../../../../../../kernel/arch/mips32/include/arch/stack.h
     1/*
     2 * Copyright (c) 2006 Josef Cejka
     3 * All rights reserved.
     4 *
     5 * Redistribution and use in source and binary forms, with or without
     6 * modification, are permitted provided that the following conditions
     7 * are met:
     8 *
     9 * - Redistributions of source code must retain the above copyright
     10 *   notice, this list of conditions and the following disclaimer.
     11 * - Redistributions in binary form must reproduce the above copyright
     12 *   notice, this list of conditions and the following disclaimer in the
     13 *   documentation and/or other materials provided with the distribution.
     14 * - The name of the author may not be used to endorse or promote products
     15 *   derived from this software without specific prior written permission.
     16 *
     17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28
     29/** @addtogroup libcmips32
     30 * @{
     31 */
     32/** @file
     33 */
     34
     35#ifndef LIBC_mips32_STACK_H_
     36#define LIBC_mips32_STACK_H_
     37
     38#define STACK_ITEM_SIZE  4
     39#define STACK_ALIGNMENT  8
     40#define ABI_STACK_FRAME  32
     41
     42#endif
     43
     44/** @}
     45 */
  • uspace/lib/c/arch/mips64/include/libarch/stack.h

    • Property mode changed from 120000 to 100644
    r7f25c4e r878e181  
    1 ../../../../../../../kernel/arch/mips64/include/arch/stack.h
     1/*
     2 * Copyright (c) 2006 Josef Cejka
     3 * All rights reserved.
     4 *
     5 * Redistribution and use in source and binary forms, with or without
     6 * modification, are permitted provided that the following conditions
     7 * are met:
     8 *
     9 * - Redistributions of source code must retain the above copyright
     10 *   notice, this list of conditions and the following disclaimer.
     11 * - Redistributions in binary form must reproduce the above copyright
     12 *   notice, this list of conditions and the following disclaimer in the
     13 *   documentation and/or other materials provided with the distribution.
     14 * - The name of the author may not be used to endorse or promote products
     15 *   derived from this software without specific prior written permission.
     16 *
     17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28
     29/** @addtogroup libcmips64
     30 * @{
     31 */
     32/** @file
     33 */
     34
     35#ifndef LIBC_mips64_STACK_H_
     36#define LIBC_mips64_STACK_H_
     37
     38#define STACK_ITEM_SIZE  8
     39#define STACK_ALIGNMENT  8
     40#define ABI_STACK_FRAME  64
     41
     42#endif
     43
     44/** @}
     45 */
  • uspace/lib/c/generic/async.c

    r7f25c4e r878e181  
    350350static async_client_conn_t client_connection = default_client_connection;
    351351static async_interrupt_handler_t interrupt_received = default_interrupt_received;
     352static size_t interrupt_handler_stksz = (size_t) -1;
    352353
    353354/** Setter for client_connection function pointer.
     
    370371{
    371372        interrupt_received = intr;
     373}
     374
     375/** Set the stack size for the interrupt handler notification fibrils.
     376 *
     377 * @param size Stack size. Use -1 to use the system default stack size.
     378 */
     379void async_set_interrupt_handler_stack_size(size_t size)
     380{
     381        interrupt_handler_stksz = size;
    372382}
    373383
     
    587597        msg->call = *call;
    588598       
    589         fid_t fid = fibril_create(notification_fibril, msg);
     599        fid_t fid = fibril_create_generic(notification_fibril, msg,
     600            interrupt_handler_stksz);
    590601        if (fid == 0) {
    591602                free(msg);
  • uspace/lib/c/generic/fibril.c

    r7f25c4e r878e181  
    256256 * @param func Implementing function of the new fibril.
    257257 * @param arg Argument to pass to func.
     258 * @param stksz Stack size, -1 for the system default stack size.
    258259 *
    259260 * @return 0 on failure or TLS of the new fibril.
    260261 *
    261262 */
    262 fid_t fibril_create(int (*func)(void *), void *arg)
     263fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t stksz)
    263264{
    264265        fibril_t *fibril;
     
    268269                return 0;
    269270       
    270         size_t stack_size = stack_size_get();
     271        size_t stack_size = (stksz == (size_t) -1) ? stack_size_get() : stksz;
    271272        fibril->stack = as_area_create((void *) -1, stack_size,
    272273            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
  • uspace/lib/c/include/async.h

    r7f25c4e r878e181  
    156156extern void async_set_client_connection(async_client_conn_t);
    157157extern void async_set_interrupt_received(async_interrupt_handler_t);
     158extern void async_set_interrupt_handler_stack_size(size_t);
    158159
    159160/*
  • uspace/lib/c/include/fibril.h

    r7f25c4e r878e181  
    8686extern void context_restore(context_t *ctx) __attribute__((noreturn));
    8787
    88 extern fid_t fibril_create(int (*func)(void *), void *arg);
     88#define fibril_create(func, arg) \
     89        fibril_create_generic((func), (arg), (size_t) -1)
     90extern fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t);
    8991extern void fibril_destroy(fid_t fid);
    9092extern fibril_t *fibril_setup(void);
  • uspace/lib/c/include/macros.h

    r7f25c4e r878e181  
    3838#define min(a, b)  ((a) < (b) ? (a) : (b))
    3939#define max(a, b)  ((a) > (b) ? (a) : (b))
    40 #define abs(a)     ((a) >= 0 ? (a) : (-a))
     40#define abs(a)     ((a) >= 0 ? (a) : -(a))
    4141
    4242
  • version

    r7f25c4e r878e181  
    4646
    4747NAME = Fajtl
    48 COPYRIGHT = Copyright (c) 2001-2012 HelenOS project
     48COPYRIGHT = Copyright (c) 2001-2013 HelenOS project
    4949
Note: See TracChangeset for help on using the changeset viewer.