亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kernel.c

?? A PIC-PID Example
?? C
字號:
/*
 * Copyright (C) ARM Limited 1999. All rights reserved.
 */

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

#include "kernel.h"

#define  SERVICE_NAME_LEN   32
#define  BSS_SIZE         4096

typedef struct Service Service;
struct Service
{
    char name[SERVICE_NAME_LEN];
    kernel_Service *fn;
    unsigned bss_size;
};

#define N_SERVICES  10
static Service services[N_SERVICES];
static unsigned n_services;

static char data_space[BSS_SIZE];
static unsigned data_space_used;

/* Define the static base register as v6 */
__global_reg(6) char *sb;


int kernel_Register(
    char const *service_name,
    kernel_Service *service_function,
    unsigned bss_size)
{
    if (n_services >= N_SERVICES)
    {
        return KERNEL_MEMFULL;
    }
    else
    {
        Service *s = services + n_services;
        ++n_services;

        strncpy(s->name, service_name, SERVICE_NAME_LEN);
        s->name[SERVICE_NAME_LEN-1] = 0;
        s->fn = service_function;
        s->bss_size = bss_size;

        return KERNEL_OK;
    }
}


int kernel_Call(
    char const *service_name,
    unsigned sub_function,
    void *arg)
{
    unsigned j;
    Service *s;

    for (j = 0;  j < n_services;  ++j)
    {
        s = services + j;
        if (strcmp(s->name, service_name) == 0)
        {
            break;
        }
    }

    if (j >= n_services)
    {
        return KERNEL_BADARGS;
    }
    else if (data_space_used + s->bss_size > BSS_SIZE)
    {
        return KERNEL_MEMFULL;
    }
    else
    {
        char *saved_sb = sb;
        sb = data_space + data_space_used;
        data_space_used += s->bss_size;

        s->fn(sub_function, arg);

        data_space_used -= s->bss_size;
        sb = saved_sb;

        return KERNEL_OK;
    }
}


extern char Image$$RO$$Limit;
typedef void ServiceInitFn(void);

static void find_and_register_services(void)
{
    char *base = &Image$$RO$$Limit;
    char *limit = base + 128*1024;   /* <= 128KB of apps */
    char *p;

    for (p = base;  p < limit;  ++p) 
    {
        if (*p == '*' && strcmp(p, "*** Service ***") == 0)
        {
            int *f = (int *)(p + 16);
            if (*f == 0)
            {
                break;
            }
            else
            {
                ((ServiceInitFn *)((char *)f + *f))();
            }
        }
    }
}


static void list_services(void)
{
    unsigned j;

    if (n_services > 0)
    {
        printf(" -Address- -bss- ---Name---\n");
        for (j = 0;  j < n_services;  ++ j)
        {
            Service *s = services + j;
            printf("0x%.8x %5u %s\n", (unsigned)s->fn, s->bss_size, s->name);
        }
    }
    else
    {
        printf("No services registered\n");
    }
}


static void call_service(char const *s)
{
    char sname[SERVICE_NAME_LEN];

    while (*s != 0 && !isspace(*s)) ++s;
    while (isspace(*s)) ++s;
    if (*s == 0)
    {
        printf("C service-name [sub-function] [argument]\n");
        return;
    }
    else
    {
        int j = 0, rc;
        char *rest;
        unsigned sub_fn, arg;

        while (!isspace(*s))
        {
            if (j < (SERVICE_NAME_LEN-1))
            {
                sname[j++] = *s;
            }
            ++s;
        }
        sname[j] = 0;
        sub_fn = strtoul(s, &rest, 0);
        arg = strtoul(rest, NULL, 0);
        
        rc = kernel_Call(sname, sub_fn, (void *)arg);

        if (rc == KERNEL_BADARGS)
        {
            printf("Service \"%s\" not found\n", sname);
        }
        else if (rc == KERNEL_MEMFULL)
        {
            printf("No memory left to call Service \"%s\"\n", sname);
        }
    }
}


static void do_commands(void)
{
    char cmdbuf[64];
    char *s;

    printf("\nCommands are Quit, List, Call\n\n");
    for (;;)
    {
        fputs("-> ", stdout);
        if (fgets(cmdbuf, sizeof(cmdbuf), stdin) == NULL)
        {
            break;
        }
        else
        {
            cmdbuf[sizeof(cmdbuf)-1] = 0;
        }
        for (s = cmdbuf;  *s != 0 && isspace(*s);)
        {
            ++s;
        }
        switch (*s)
        {
        case 'c':
        case 'C':
            call_service(s);
            break;
        case 'l':
        case 'L':
            list_services();
            break;
        case 'q':
        case 'Q':
            return;
        default:
            break;
        }
    }
}


int main(void)
{
    n_services = 0;
    data_space_used = 0;

    find_and_register_services();

    list_services();

    do_commands();

    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久久久久久久| 中文幕一区二区三区久久蜜桃| www.色精品| 国产成人综合精品三级| 久久 天天综合| 国产精品自拍网站| 丁香一区二区三区| 成人久久18免费网站麻豆 | 久久噜噜亚洲综合| 精品国产乱码久久久久久夜甘婷婷 | 亚洲综合久久av| 亚洲国产综合色| 热久久国产精品| 另类欧美日韩国产在线| 国内外成人在线| 国产传媒久久文化传媒| 91在线观看污| 欧美性高清videossexo| 日韩三级视频在线看| 欧美精品一区二区三区久久久| 久久久亚洲精品一区二区三区 | 韩国在线一区二区| 国产精品自拍在线| 91麻豆6部合集magnet| 欧美精品一卡两卡| 国产日韩欧美精品电影三级在线| 亚洲欧美精品午睡沙发| 麻豆中文一区二区| 不卡电影一区二区三区| 欧美日韩亚洲综合在线 | 欧美亚洲尤物久久| 日韩你懂的电影在线观看| 国产日产欧产精品推荐色| 亚洲精品成人精品456| 蜜桃视频第一区免费观看| 成人丝袜18视频在线观看| 3751色影院一区二区三区| 中文字幕国产精品一区二区| 天堂成人免费av电影一区| 国产成人在线免费| 9191久久久久久久久久久| 国产精品久久久久影视| 麻豆精品新av中文字幕| 色婷婷av久久久久久久| 欧美成人欧美edvon| 亚洲一区影音先锋| 成人精品小蝌蚪| 精品久久一二三区| 亚洲成人黄色影院| 成人av午夜影院| 亚洲精品一区在线观看| 丝袜美腿高跟呻吟高潮一区| 成人免费高清在线| 久久免费偷拍视频| 久久精品av麻豆的观看方式| 在线视频你懂得一区二区三区| 国产日韩影视精品| 久久精品99国产精品| 欧美精品自拍偷拍| 亚洲福中文字幕伊人影院| 99久久综合狠狠综合久久| 久久免费视频色| 激情国产一区二区| 欧美成人vps| 美女网站视频久久| 日韩欧美一区二区久久婷婷| 性欧美大战久久久久久久久| 91丨九色丨尤物| 亚洲欧洲色图综合| 99视频在线观看一区三区| 国产精品污网站| 成人综合在线观看| 欧美国产一区视频在线观看| 粉嫩欧美一区二区三区高清影视 | 色综合久久综合网欧美综合网 | 精品日产卡一卡二卡麻豆| 日韩国产在线观看一区| 欧美男男青年gay1069videost | 麻豆传媒一区二区三区| 欧美一区二区三区播放老司机| 午夜免费久久看| 欧美久久一区二区| 蜜臀av亚洲一区中文字幕| 欧美电影免费观看高清完整版| 久色婷婷小香蕉久久| 久久久久久日产精品| 成人激情黄色小说| 一区二区三区丝袜| 69堂亚洲精品首页| 国内精品伊人久久久久av影院 | 中文字幕一区二区三中文字幕| 懂色av一区二区三区免费观看| 日韩毛片一二三区| 欧美怡红院视频| 麻豆91在线播放免费| 久久久久亚洲蜜桃| 色呦呦一区二区三区| 日本美女一区二区| 久久青草欧美一区二区三区| 99国产精品久| 亚洲制服丝袜一区| 精品国产a毛片| 一本到不卡免费一区二区| 午夜天堂影视香蕉久久| xnxx国产精品| 在线观看欧美黄色| 激情偷乱视频一区二区三区| 中文字幕在线观看不卡| 日韩一级片在线观看| 成人av电影在线观看| 秋霞影院一区二区| 国产精品成人在线观看| 欧美三级资源在线| 成人黄色网址在线观看| 视频精品一区二区| 国产精品美女一区二区三区| 欧美狂野另类xxxxoooo| 99r国产精品| 久久国产精品第一页| 亚洲国产精品一区二区久久| 久久人人爽爽爽人久久久| 欧美麻豆精品久久久久久| 成人免费视频一区| 九九视频精品免费| 亚洲国产综合91精品麻豆| 中文字幕在线播放不卡一区| 精品国产乱码久久久久久牛牛| 91传媒视频在线播放| 成人福利视频在线| 国产精品亚洲人在线观看| 日本成人中文字幕| 亚洲国产裸拍裸体视频在线观看乱了| 国产午夜精品一区二区三区视频| 69精品人人人人| 精品久久免费看| 欧美三级三级三级| 色婷婷av一区二区三区软件 | 久久久久久久久久久99999| 欧美人牲a欧美精品| 欧洲另类一二三四区| 91在线国产福利| 91在线云播放| 成人久久久精品乱码一区二区三区 | 肉丝袜脚交视频一区二区| 亚洲同性gay激情无套| 国产精品视频线看| 国产欧美日韩在线| 国产日韩欧美a| 亚洲国产电影在线观看| 国产日韩欧美麻豆| 国产精品人人做人人爽人人添| 国产农村妇女毛片精品久久麻豆| 久久久美女毛片| 欧美高清一级片在线观看| 欧美激情自拍偷拍| 国产精品黄色在线观看| 亚洲色图视频网| 一区二区三区国产豹纹内裤在线 | 欧美高清dvd| 制服视频三区第一页精品| 91精品国产综合久久精品麻豆| 91精品国产91久久久久久最新毛片 | 色欧美片视频在线观看在线视频| 99精品视频在线观看免费| 色婷婷av一区二区三区之一色屋| 日本韩国欧美三级| 欧美二区三区91| www国产成人| 国产精品丝袜黑色高跟| 亚洲精品中文字幕在线观看| 亚洲小说欧美激情另类| 日韩电影免费在线| 国产资源在线一区| 91老师国产黑色丝袜在线| 欧美午夜免费电影| 精品国产露脸精彩对白| 中文字幕第一区第二区| 一区二区在线观看免费 | 国产欧美一区二区在线观看| 国产精品少妇自拍| 一个色综合网站| 久久99精品国产.久久久久久| 成人aaaa免费全部观看| 欧美精品乱人伦久久久久久| 26uuu色噜噜精品一区| 亚洲精品久久久久久国产精华液| 婷婷亚洲久悠悠色悠在线播放| 久久99热狠狠色一区二区| gogo大胆日本视频一区| 欧美日韩亚洲综合在线| 欧美国产97人人爽人人喊| 亚洲午夜视频在线| 成人在线综合网| 日韩一卡二卡三卡国产欧美| 国产精品久久久久毛片软件| 免费黄网站欧美| 色婷婷久久综合| 国产欧美日韩视频一区二区 | 久久精子c满五个校花| 一区二区成人在线|