Changes in / [743e17b:e5d4294] in mainline


Ignore:
Files:
55 added
38 deleted
24 edited

Legend:

Unmodified
Added
Removed
  • contrib/arch/HelenOS.adl

    r743e17b re5d4294  
    66        inst ns ns;
    77       
    8         /* RAM disk */
    9         inst rd rd;
     8        /* Loader (clonable service) */
     9        inst loader loader;
    1010       
    11         /* Klog */
     11        /* Block device */
     12        inst bd bd;
     13       
     14        /* VFS server */
     15        inst vfs vfs;
     16       
     17        /* Console */
     18        inst console console;
     19       
     20        /* Kernel log */
    1221        inst klog klog;
    1322       
    1423        [/uspace/lib/libc/bind%ns]
     24        [/uspace/lib/libc/bind%loader]
     25        [/uspace/lib/libc/bind%bd]
     26        [/uspace/lib/libc/bind%vfs]
     27        [/uspace/lib/libc/bind%console]
     28        [/uspace/lib/libc/bind%klog]
    1529       
    16         [/usrpace/lib/libc/bind%rd]
    17         bind rd:ns to ns:ns;
    18         bind rd:dm_driver to devmap:dm_driver;
     30        bind loader:ns to ns:ns;
    1931       
    20         [/usrpace/lib/libc/bind%klog]
     32        bind bd:ns to ns:ns;
     33        bind bd:devmap_driver to devmap:devmap_driver;
     34       
     35        bind vfs:ns to ns:ns;
     36        bind vfs:bd to bd:bd;
     37        bind vfs:devmap_client to devmap:devmap_client;
     38        bind vfs:device to console:console;
     39       
     40        bind console:ns to ns:ns;
     41       
    2142        bind klog:ns to ns:ns;
    2243};
  • contrib/arch/hadlbppp.py

    r743e17b re5d4294  
    3434import os
    3535
     36INC, POST_INC, BLOCK_COMMENT, LINE_COMMENT, SYSTEM, ARCH, HEAD, BODY, NULL, \
     37        INST, VAR, FIN, BIND, TO, SUBSUME, DELEGATE, IFACE, PROTOTYPE, PAR_LEFT, \
     38        PAR_RIGHT, SIGNATURE, PROTOCOL, FRAME, PROVIDES, REQUIRES = range(25)
     39
    3640def usage(prname):
    3741        "Print usage syntax"
    38         print prname + " <OUTPUT>"
     42       
     43        print "%s <OUTPUT>" % prname
    3944
    4045def tabs(cnt):
     
    4853        if (trim):
    4954                token = token.strip(" \t")
    50                 if (token != ""):
    51                         tokens.append(token)
    52         else:
     55       
     56        if (token != ""):
    5357                tokens.append(token)
    5458       
    5559        return tokens
    5660
    57 def split_tokens(string, delimiters, trim = False):
     61def split_tokens(string, delimiters, trim = False, separate = False):
    5862        "Split string to tokens by delimiters, keep the delimiters"
    5963       
     
    6670                        if (len(delim) > 0):
    6771                               
    68                                 if ((string[i:(i + len(delim))] == delim) and (i > 0)):
    69                                         tokens = cond_append(tokens, string[last:i], trim)
    70                                         last = i
     72                                if (string[i:(i + len(delim))] == delim):
     73                                        if (separate):
     74                                                tokens = cond_append(tokens, string[last:i], trim)
     75                                                tokens = cond_append(tokens, delim, trim)
     76                                                last = i + len(delim)
     77                                        elif (i > 0):
     78                                                tokens = cond_append(tokens, string[last:i], trim)
     79                                                last = i
     80                                       
    7181                                        i += len(delim) - 1
    7282                                        break
     
    7888        return tokens
    7989
    80 def parse(fname, outf):
    81         "Parse particular protocol"
    82        
    83         inf = file(fname, "r")
    84         outf.write("### %s\n\n" % fname)
    85        
    86         tokens = split_tokens(inf.read(), ["\n", " ", "\t", "(", ")", "{", "}", "[", "/*", "*/", "#", "*", ";", "+", "||", "|", "!", "?"], True)
    87        
    88         empty = True
    89         comment = False
    90         lcomment = False
    91         indent = 0
     90def identifier(token):
     91        "Check whether the token is an identifier"
     92       
     93        if (len(token) == 0):
     94                return False
     95       
     96        for i, char in enumerate(token):
     97                if (i == 0):
     98                        if ((not char.isalpha()) and (char != "_")):
     99                                return False
     100                else:
     101                        if ((not char.isalnum()) and (char != "_")):
     102                                return False
     103       
     104        return True
     105
     106def descriptor(token):
     107        "Check whether the token is an interface descriptor"
     108       
     109        parts = token.split(":")
     110        if (len(parts) != 2):
     111                return False
     112       
     113        return (identifier(parts[0]) and identifier(parts[1]))
     114
     115def word(token):
     116        "Check whether the token is a word"
     117       
     118        if (len(token) == 0):
     119                return False
     120       
     121        for i, char in enumerate(token):
     122                if ((not char.isalnum()) and (char != "_") and (char != ".")):
     123                        return False
     124       
     125        return True
     126
     127def preproc_bp(name, tokens):
     128        "Preprocess tentative statements in Behavior Protocol"
     129       
     130        result = []
     131        i = 0
     132       
     133        while (i < len(tokens)):
     134                if (tokens[i] == "tentative"):
     135                        if ((i + 1 < len(tokens)) and (tokens[i + 1] == "{")):
     136                                i += 2
     137                                start = i
     138                                level = 1
     139                               
     140                                while ((i < len(tokens)) and (level > 0)):
     141                                        if (tokens[i] == "{"):
     142                                                level += 1
     143                                        elif (tokens[i] == "}"):
     144                                                level -= 1
     145                                       
     146                                        i += 1
     147                               
     148                                if (level == 0):
     149                                        result.append("(")
     150                                        result.extend(preproc_bp(name, tokens[start:(i - 1)]))
     151                                        result.append(")")
     152                                        result.append("+")
     153                                        result.append("NULL")
     154                                        if (i < len(tokens)):
     155                                                result.append(tokens[i])
     156                                else:
     157                                        print "%s: Syntax error in tentative statement" % name
     158                        else:
     159                                print "%s: Unexpected token in tentative statement" % name
     160                else:
     161                        result.append(tokens[i])
     162               
     163                i += 1
     164       
     165        return result
     166
     167def split_bp(protocol):
     168        "Convert Behavior Protocol to tokens"
     169       
     170        return split_tokens(protocol, ["\n", " ", "\t", "(", ")", "{", "}", "*", ";", "+", "||", "|", "!", "?"], True, True)
     171
     172def extend_bp(name, tokens, iface):
     173        "Add interface to incoming messages"
     174       
     175        result = []
     176        i = 0
     177       
     178        while (i < len(tokens)):
     179                result.append(tokens[i])
     180               
     181                if (tokens[i] == "?"):
     182                        if (i + 1 < len(tokens)):
     183                                i += 1
     184                                parts = tokens[i].split(".")
     185                               
     186                                if (len(parts) == 1):
     187                                        result.append("%s.%s" % (iface, tokens[i]))
     188                                else:
     189                                        result.append(tokens[i])
     190                        else:
     191                                print "%s: Unexpected end of protocol" % name
     192               
     193                i += 1
     194       
     195        return result
     196
     197def merge_bp(protocols):
     198        "Merge several Behavior Protocols"
     199       
     200        if (len(protocols) > 1):
     201                result = []
     202                first = True
     203               
     204                for protocol in protocols:
     205                        if (first):
     206                                first = False
     207                        else:
     208                                result.append("|")
     209                       
     210                        result.append("(")
     211                        result.extend(protocol)
     212                        result.append(")")
     213               
     214                return result
     215       
     216        if (len(protocols) == 1):
     217                return protocols[0]
     218       
     219        return []
     220
     221def parse_bp(name, tokens, base_indent):
     222        "Parse Behavior Protocol"
     223       
     224        tokens = preproc_bp(name, tokens)
     225       
     226        indent = base_indent
     227        output = ""
    92228       
    93229        for token in tokens:
    94                 if (comment):
    95                         if (token == "*/"):
    96                                 comment = False
    97                         continue
    98                
    99                 if ((not comment) and (token == "/*")):
    100                         comment = True
    101                         continue
    102                
    103                 if (lcomment):
    104                         if (token == "\n"):
    105                                 lcomment = False
    106                         continue
    107                
    108                 if ((not lcomment) and (token == "#")):
    109                         lcomment = True
    110                         continue
    111                
    112230                if (token == "\n"):
    113231                        continue
    114232               
    115                 if (empty):
    116                         empty = False
    117                
    118233                if ((token == ";") or (token == "+") or (token == "||") or (token == "|")):
    119                         outf.write(" %s\n" % token)
     234                        output += " %s" % token
    120235                elif (token == "("):
    121                         outf.write("%s%s\n" % (tabs(indent), token))
     236                        output += "\n%s%s" % (tabs(indent), token)
    122237                        indent += 1
    123238                elif (token == ")"):
     239                        if (indent < base_indent):
     240                                print "%s: Too many parentheses" % name
     241                       
    124242                        indent -= 1
    125                         outf.write("\n%s%s" % (tabs(indent), token))
     243                        output += "\n%s%s" % (tabs(indent), token)
    126244                elif (token == "{"):
    127                         outf.write(" %s\n" % token)
     245                        output += " %s" % token
    128246                        indent += 1
    129247                elif (token == "}"):
     248                        if (indent < base_indent):
     249                                print "%s: Too many parentheses" % name
     250                       
    130251                        indent -= 1
    131                         outf.write("\n%s%s" % (tabs(indent), token))
     252                        output += "\n%s%s" % (tabs(indent), token)
    132253                elif (token == "*"):
    133                         outf.write("%s" % token)
     254                        output += "%s" % token
     255                elif ((token == "!") or (token == "?") or (token == "NULL")):
     256                        output += "\n%s%s" % (tabs(indent), token)
    134257                else:
    135                         outf.write("%s%s" % (tabs(indent), token))
    136        
    137         if (empty):
     258                        output += "%s" % token
     259       
     260        if (indent > base_indent):
     261                print "%s: Missing parentheses" % name
     262       
     263        output = output.strip()
     264        if (output == ""):
     265                return "NULL"
     266       
     267        return output
     268
     269def get_iface(name):
     270        "Get interface by name"
     271       
     272        global iface_properties
     273       
     274        if (name in iface_properties):
     275                return iface_properties[name]
     276       
     277        return None
     278
     279def dump_frame(frame, outdir):
     280        "Dump Behavior Protocol of a given frame"
     281       
     282        outname = os.path.join(outdir, "%s.bp" % frame['name'])
     283        if (os.path.isfile(outname)):
     284                print "%s: File already exists, overwriting" % outname
     285       
     286        protocols = []
     287        if ('protocol' in frame):
     288                protocols.append(frame['protocol'])
     289       
     290        if ('provides' in frame):
     291                for provides in frame['provides']:
     292                        iface = get_iface(provides['iface'])
     293                        if (not iface is None):
     294                                if ('protocol' in iface):
     295                                        protocols.append(extend_bp(outname, iface['protocol'], iface['name']))
     296                        else:
     297                                print "%s: Provided interface '%s' is undefined" % (frame['name'], provides['iface'])
     298       
     299        outf = file(outname, "w")
     300        outf.write(parse_bp(outname, merge_bp(protocols), 0))
     301        outf.close()
     302
     303def get_system_arch():
     304        "Get system architecture"
     305       
     306        global arch_properties
     307       
     308        for arch, properties in arch_properties.items():
     309                if ('system' in properties):
     310                        return properties
     311       
     312        return None
     313
     314def get_arch(name):
     315        "Get architecture by name"
     316       
     317        global arch_properties
     318       
     319        if (name in arch_properties):
     320                return arch_properties[name]
     321       
     322        return None
     323
     324def get_frame(name):
     325        "Get frame by name"
     326       
     327        global frame_properties
     328       
     329        if (name in frame_properties):
     330                return frame_properties[name]
     331       
     332        return None
     333
     334def create_null_bp(name, outdir):
     335        "Create null frame protocol"
     336       
     337        outname = os.path.join(outdir, name)
     338        if (not os.path.isfile(outname)):
     339                outf = file(outname, "w")
    138340                outf.write("NULL")
    139        
    140         outf.write("\n\n\n")
     341                outf.close()
     342
     343def dump_arch(arch, outdir):
     344        "Dump architecture Behavior Protocol"
     345       
     346        outname = os.path.join(outdir, "%s.archbp" % arch['name'])
     347        if (os.path.isfile(outname)):
     348                print "%s: File already exists, overwriting" % outname
     349       
     350        outf = file(outname, "w")
     351       
     352        create_null_bp("null.bp", outdir)
     353        outf.write("frame \"null.bp\"\n\n")
     354       
     355        if ('inst' in arch):
     356                for inst in arch['inst']:
     357                        subarch = get_arch(inst['type'])
     358                        if (not subarch is None):
     359                                outf.write("instantiate %s from \"%s.archbp\"\n" % (inst['var'], inst['type']))
     360                                dump_arch(subarch, outdir)
     361                        else:
     362                                subframe = get_frame(inst['type'])
     363                                if (not subframe is None):
     364                                        outf.write("instantiate %s from \"%s.bp\"\n" % (inst['var'], inst['type']))
     365                                        dump_frame(subframe, outdir)
     366                                else:
     367                                        print "%s: '%s' is neither architecture nor frame" % (arch['name'], inst['type'])
     368               
     369                outf.write("\n")
     370       
     371        if ('bind' in arch):
     372                for bind in arch['bind']:
     373                        outf.write("bind %s.%s to %s.%s\n" % (bind['from'][0], bind['from'][1], bind['to'][0], bind['to'][1]))
     374       
     375        outf.close()
     376
     377def preproc_adl(raw, inarg):
     378        "Preprocess %% statements in ADL"
     379       
     380        return raw.replace("%%", inarg)
     381
     382def parse_adl(base, root, inname, nested, indent):
     383        "Parse Architecture Description Language"
     384       
     385        global output
     386        global context
     387        global architecture
     388        global interface
     389        global frame
     390        global protocol
     391       
     392        global iface_properties
     393        global frame_properties
     394        global arch_properties
     395       
     396        global arg0
     397       
     398        if (nested):
     399                parts = inname.split("%")
     400               
     401                if (len(parts) > 1):
     402                        inarg = parts[1]
     403                else:
     404                        inarg = "%%"
     405               
     406                if (parts[0][0:1] == "/"):
     407                        path = os.path.join(base, ".%s" % parts[0])
     408                        nested_root = os.path.dirname(path)
     409                else:
     410                        path = os.path.join(root, parts[0])
     411                        nested_root = root
     412               
     413                if (not os.path.isfile(path)):
     414                        print "%s: Unable to include file %s" % (inname, path)
     415                        return ""
     416        else:
     417                inarg = "%%"
     418                path = inname
     419                nested_root = root
     420       
     421        inf = file(path, "r")
     422       
     423        raw = preproc_adl(inf.read(), inarg)
     424        tokens = split_tokens(raw, ["\n", " ", "\t", "(", ")", "{", "}", "[", "]", "/*", "*/", "#", ";"], True, True)
     425       
     426        for token in tokens:
     427               
     428                # Includes
     429               
     430                if (INC in context):
     431                        context.remove(INC)
     432                        parse_adl(base, nested_root, token, True, indent)
     433                        context.add(POST_INC)
     434                        continue
     435               
     436                if (POST_INC in context):
     437                        if (token != "]"):
     438                                print "%s: Expected ]" % inname
     439                       
     440                        context.remove(POST_INC)
     441                        continue
     442               
     443                # Comments and newlines
     444               
     445                if (BLOCK_COMMENT in context):
     446                        if (token == "*/"):
     447                                context.remove(BLOCK_COMMENT)
     448                       
     449                        continue
     450               
     451                if (LINE_COMMENT in context):
     452                        if (token == "\n"):
     453                                context.remove(LINE_COMMENT)
     454                       
     455                        continue
     456               
     457                # Any context
     458               
     459                if (token == "/*"):
     460                        context.add(BLOCK_COMMENT)
     461                        continue
     462               
     463                if (token == "#"):
     464                        context.add(LINE_COMMENT)
     465                        continue
     466               
     467                if (token == "["):
     468                        context.add(INC)
     469                        continue
     470               
     471                if (token == "\n"):
     472                        continue
     473               
     474                # "frame"
     475               
     476                if (FRAME in context):
     477                        if (NULL in context):
     478                                if (token != ";"):
     479                                        print "%s: Expected ';' in frame '%s'" % (inname, frame)
     480                                else:
     481                                        output += "%s\n" % token
     482                               
     483                                context.remove(NULL)
     484                                context.remove(FRAME)
     485                                frame = None
     486                                continue
     487                       
     488                        if (BODY in context):
     489                                if (PROTOCOL in context):
     490                                        if (token == "{"):
     491                                                indent += 1
     492                                        elif (token == "}"):
     493                                                indent -= 1
     494                                       
     495                                        if (indent == -1):
     496                                                bp = split_bp(protocol)
     497                                                protocol = None
     498                                               
     499                                                if (not frame in frame_properties):
     500                                                        frame_properties[frame] = {}
     501                                               
     502                                                if ('protocol' in frame_properties[frame]):
     503                                                        print "%s: Protocol for frame '%s' already defined" % (inname, frame)
     504                                                else:
     505                                                        frame_properties[frame]['protocol'] = bp
     506                                               
     507                                                output += "\n%s" % tabs(2)
     508                                                output += parse_bp(inname, bp, 2)
     509                                                output += "\n%s" % token
     510                                                indent = 0
     511                                               
     512                                                context.remove(PROTOCOL)
     513                                                context.remove(BODY)
     514                                                context.add(NULL)
     515                                        else:
     516                                                protocol += token
     517                                       
     518                                        continue
     519                               
     520                                if (REQUIRES in context):
     521                                        if (FIN in context):
     522                                                if (token != ";"):
     523                                                        print "%s: Expected ';' in frame '%s'" % (inname, frame)
     524                                                else:
     525                                                        output += "%s" % token
     526                                               
     527                                                context.remove(FIN)
     528                                                continue
     529                                       
     530                                        if (VAR in context):
     531                                                if (not identifier(token)):
     532                                                        print "%s: Variable name expected in frame '%s'" % (inname, frame)
     533                                                else:
     534                                                        if (not frame in frame_properties):
     535                                                                frame_properties[frame] = {}
     536                                                       
     537                                                        if (not 'requires' in frame_properties[frame]):
     538                                                                frame_properties[frame]['requires'] = []
     539                                                       
     540                                                        frame_properties[frame]['requires'].append({'iface': arg0, 'var': token})
     541                                                        arg0 = None
     542                                                       
     543                                                        output += "%s" % token
     544                                               
     545                                                context.remove(VAR)
     546                                                context.add(FIN)
     547                                                continue
     548                                       
     549                                        if ((token == "}") or (token[-1] == ":")):
     550                                                context.remove(REQUIRES)
     551                                        else:
     552                                                if (not identifier(token)):
     553                                                        print "%s: Interface name expected in frame '%s'" % (inname, frame)
     554                                                else:
     555                                                        arg0 = token
     556                                                        output += "\n%s%s " % (tabs(indent), token)
     557                                               
     558                                                context.add(VAR)
     559                                                continue
     560                               
     561                                if (PROVIDES in context):
     562                                        if (FIN in context):
     563                                                if (token != ";"):
     564                                                        print "%s: Expected ';' in frame '%s'" % (inname, frame)
     565                                                else:
     566                                                        output += "%s" % token
     567                                               
     568                                                context.remove(FIN)
     569                                                continue
     570                                       
     571                                        if (VAR in context):
     572                                                if (not identifier(token)):
     573                                                        print "%s: Variable name expected in frame '%s'" % (inname, frame)
     574                                                else:
     575                                                        if (not frame in frame_properties):
     576                                                                frame_properties[frame] = {}
     577                                                       
     578                                                        if (not 'provides' in frame_properties[frame]):
     579                                                                frame_properties[frame]['provides'] = []
     580                                                       
     581                                                        frame_properties[frame]['provides'].append({'iface': arg0, 'var': token})
     582                                                        arg0 = None
     583                                                       
     584                                                        output += "%s" % token
     585                                               
     586                                                context.remove(VAR)
     587                                                context.add(FIN)
     588                                                continue
     589                                       
     590                                        if ((token == "}") or (token[-1] == ":")):
     591                                                context.remove(PROVIDES)
     592                                        else:
     593                                                if (not identifier(token)):
     594                                                        print "%s: Interface name expected in frame '%s'" % (inname, frame)
     595                                                else:
     596                                                        arg0 = token
     597                                                        output += "\n%s%s " % (tabs(indent), token)
     598                                               
     599                                                context.add(VAR)
     600                                                continue
     601                               
     602                                if (token == "}"):
     603                                        if (indent != 2):
     604                                                print "%s: Wrong number of parentheses in frame '%s'" % (inname, frame)
     605                                        else:
     606                                                indent = 0
     607                                                output += "\n%s" % token
     608                                       
     609                                        context.remove(BODY)
     610                                        context.add(NULL)
     611                                        continue
     612                               
     613                                if (token == "provides:"):
     614                                        output += "\n%s%s" % (tabs(indent - 1), token)
     615                                        context.add(PROVIDES)
     616                                        protocol = ""
     617                                        continue
     618                               
     619                                if (token == "requires:"):
     620                                        output += "\n%s%s" % (tabs(indent - 1), token)
     621                                        context.add(REQUIRES)
     622                                        protocol = ""
     623                                        continue
     624                               
     625                                if (token == "protocol:"):
     626                                        output += "\n%s%s" % (tabs(indent - 1), token)
     627                                        indent = 0
     628                                        context.add(PROTOCOL)
     629                                        protocol = ""
     630                                        continue
     631                               
     632                                print "%s: Unknown token '%s' in frame '%s'" % (inname, token, frame)
     633                                continue
     634                       
     635                        if (HEAD in context):
     636                                if (token == "{"):
     637                                        output += "%s" % token
     638                                        indent += 2
     639                                        context.remove(HEAD)
     640                                        context.add(BODY)
     641                                        continue
     642                               
     643                                if (token == ";"):
     644                                        output += "%s\n" % token
     645                                        context.remove(HEAD)
     646                                        context.remove(FRAME)
     647                                        continue
     648                               
     649                                print "%s: Unknown token '%s' in frame head '%s'" % (inname, token, frame)
     650                               
     651                                continue
     652                       
     653                        if (not identifier(token)):
     654                                print "%s: Expected frame name" % inname
     655                        else:
     656                                frame = token
     657                                output += "%s " % token
     658                               
     659                                if (not frame in frame_properties):
     660                                        frame_properties[frame] = {}
     661                               
     662                                frame_properties[frame]['name'] = frame
     663                       
     664                        context.add(HEAD)
     665                        continue
     666               
     667                # "interface"
     668               
     669                if (IFACE in context):
     670                        if (NULL in context):
     671                                if (token != ";"):
     672                                        print "%s: Expected ';' in interface '%s'" % (inname, interface)
     673                                else:
     674                                        output += "%s\n" % token
     675                               
     676                                context.remove(NULL)
     677                                context.remove(IFACE)
     678                                interface = None
     679                                continue
     680                       
     681                        if (BODY in context):
     682                                if (PROTOCOL in context):
     683                                        if (token == "{"):
     684                                                indent += 1
     685                                        elif (token == "}"):
     686                                                indent -= 1
     687                                       
     688                                        if (indent == -1):
     689                                                bp = split_bp(protocol)
     690                                                protocol = None
     691                                               
     692                                                if (not interface in iface_properties):
     693                                                        iface_properties[interface] = {}
     694                                               
     695                                                if ('protocol' in iface_properties[interface]):
     696                                                        print "%s: Protocol for interface '%s' already defined" % (inname, interface)
     697                                                else:
     698                                                        iface_properties[interface]['protocol'] = bp
     699                                               
     700                                                output += "\n%s" % tabs(2)
     701                                                output += parse_bp(inname, bp, 2)
     702                                                output += "\n%s" % token
     703                                                indent = 0
     704                                               
     705                                                context.remove(PROTOCOL)
     706                                                context.remove(BODY)
     707                                                context.add(NULL)
     708                                        else:
     709                                                protocol += token
     710                                       
     711                                        continue
     712                               
     713                                if (PROTOTYPE in context):
     714                                        if (FIN in context):
     715                                                if (token != ";"):
     716                                                        print "%s: Expected ';' in interface '%s'" % (inname, interface)
     717                                                else:
     718                                                        output += "%s" % token
     719                                               
     720                                                context.remove(FIN)
     721                                                context.remove(PROTOTYPE)
     722                                                continue
     723                                       
     724                                        if (PAR_RIGHT in context):
     725                                                if (token == ")"):
     726                                                        output += "%s" % token
     727                                                        context.remove(PAR_RIGHT)
     728                                                        context.add(FIN)
     729                                                else:
     730                                                        output += " %s" % token
     731                                               
     732                                                continue
     733                                       
     734                                        if (SIGNATURE in context):
     735                                                output += "%s" % token
     736                                                if (token == ")"):
     737                                                        context.remove(SIGNATURE)
     738                                                        context.add(FIN)
     739                                               
     740                                                context.remove(SIGNATURE)
     741                                                context.add(PAR_RIGHT)
     742                                                continue
     743                                       
     744                                        if (PAR_LEFT in context):
     745                                                if (token != "("):
     746                                                        print "%s: Expected '(' in interface '%s'" % (inname, interface)
     747                                                else:
     748                                                        output += "%s" % token
     749                                               
     750                                                context.remove(PAR_LEFT)
     751                                                context.add(SIGNATURE)
     752                                                continue
     753                                       
     754                                        if (not identifier(token)):
     755                                                print "%s: Method identifier expected in interface '%s'" % (inname, interface)
     756                                        else:
     757                                                output += "%s" % token
     758                                       
     759                                        context.add(PAR_LEFT)
     760                                        continue
     761                               
     762                                if (token == "}"):
     763                                        if (indent != 2):
     764                                                print "%s: Wrong number of parentheses in interface '%s'" % (inname, interface)
     765                                        else:
     766                                                indent = 0
     767                                                output += "\n%s" % token
     768                                       
     769                                        context.remove(BODY)
     770                                        context.add(NULL)
     771                                        continue
     772                               
     773                                if ((token == "ipcarg_t") or (token == "unative_t")):
     774                                        output += "\n%s%s " % (tabs(indent), token)
     775                                        context.add(PROTOTYPE)
     776                                        continue
     777                               
     778                                if (token == "protocol:"):
     779                                        output += "\n%s%s" % (tabs(indent - 1), token)
     780                                        indent = 0
     781                                        context.add(PROTOCOL)
     782                                        protocol = ""
     783                                        continue
     784                               
     785                                print "%s: Unknown token '%s' in interface '%s'" % (inname, token, interface)
     786                                continue
     787                       
     788                        if (HEAD in context):
     789                                if (token == "{"):
     790                                        output += "%s" % token
     791                                        indent += 2
     792                                        context.remove(HEAD)
     793                                        context.add(BODY)
     794                                        continue
     795                               
     796                                if (token == ";"):
     797                                        output += "%s\n" % token
     798                                        context.remove(HEAD)
     799                                        context.remove(ARCH)
     800                                        continue
     801                               
     802                                if (not word(token)):
     803                                        print "%s: Expected word in interface head '%s'" % (inname, interface)
     804                                else:
     805                                        output += "%s " % token
     806                               
     807                                continue
     808                       
     809                        if (not identifier(token)):
     810                                print "%s: Expected interface name" % inname
     811                        else:
     812                                interface = token
     813                                output += "%s " % token
     814                               
     815                                if (not interface in iface_properties):
     816                                        iface_properties[interface] = {}
     817                               
     818                                iface_properties[interface]['name'] = interface
     819                       
     820                        context.add(HEAD)
     821                        continue
     822               
     823                # "architecture"
     824               
     825                if (ARCH in context):
     826                        if (NULL in context):
     827                                if (token != ";"):
     828                                        print "%s: Expected ';' in architecture '%s'" % (inname, architecture)
     829                                else:
     830                                        output += "%s\n" % token
     831                               
     832                                context.remove(NULL)
     833                                context.remove(ARCH)
     834                                context.discard(SYSTEM)
     835                                architecture = None
     836                                continue
     837                       
     838                        if (BODY in context):
     839                                if (DELEGATE in context):
     840                                        if (FIN in context):
     841                                                if (token != ";"):
     842                                                        print "%s: Expected ';' in architecture '%s'" % (inname, architecture)
     843                                                else:
     844                                                        output += "%s" % token
     845                                               
     846                                                context.remove(FIN)
     847                                                context.remove(DELEGATE)
     848                                                continue
     849                                       
     850                                        if (VAR in context):
     851                                                if (not descriptor(token)):
     852                                                        print "%s: Expected interface descriptor in architecture '%s'" % (inname, architecture)
     853                                                else:
     854                                                        if (not architecture in arch_properties):
     855                                                                arch_properties[architecture] = {}
     856                                                       
     857                                                        if (not 'delegate' in arch_properties[architecture]):
     858                                                                arch_properties[architecture]['delegate'] = []
     859                                                       
     860                                                        arch_properties[architecture]['delegate'].append({'from': arg0, 'to': token.split(":")})
     861                                                        arg0 = None
     862                                                       
     863                                                        output += "%s" % token
     864                                               
     865                                                context.add(FIN)
     866                                                context.remove(VAR)
     867                                                continue
     868                                       
     869                                        if (TO in context):
     870                                                if (token != "to"):
     871                                                        print "%s: Expected 'to' in architecture '%s'" % (inname, architecture)
     872                                                else:
     873                                                        output += "%s " % token
     874                                               
     875                                                context.add(VAR)
     876                                                context.remove(TO)
     877                                                continue
     878                                       
     879                                        if (not identifier(token)):
     880                                                print "%s: Expected interface name in architecture '%s'" % (inname, architecture)
     881                                        else:
     882                                                output += "%s " % token
     883                                                arg0 = token
     884                                       
     885                                        context.add(TO)
     886                                        continue
     887                               
     888                                if (SUBSUME in context):
     889                                        if (FIN in context):
     890                                                if (token != ";"):
     891                                                        print "%s: Expected ';' in architecture '%s'" % (inname, architecture)
     892                                                else:
     893                                                        output += "%s" % token
     894                                               
     895                                                context.remove(FIN)
     896                                                context.remove(SUBSUME)
     897                                                continue
     898                                       
     899                                        if (VAR in context):
     900                                                if (not identifier(token)):
     901                                                        print "%s: Expected interface name in architecture '%s'" % (inname, architecture)
     902                                                else:
     903                                                        if (not architecture in arch_properties):
     904                                                                arch_properties[architecture] = {}
     905                                                       
     906                                                        if (not 'subsume' in arch_properties[architecture]):
     907                                                                arch_properties[architecture]['subsume'] = []
     908                                                       
     909                                                        arch_properties[architecture]['subsume'].append({'from': arg0.split(":"), 'to': token})
     910                                                        arg0 = None
     911                                                       
     912                                                        output += "%s" % token
     913                                               
     914                                                context.add(FIN)
     915                                                context.remove(VAR)
     916                                                continue
     917                                       
     918                                        if (TO in context):
     919                                                if (token != "to"):
     920                                                        print "%s: Expected 'to' in architecture '%s'" % (inname, architecture)
     921                                                else:
     922                                                        output += "%s " % token
     923                                               
     924                                                context.add(VAR)
     925                                                context.remove(TO)
     926                                                continue
     927                                       
     928                                        if (not descriptor(token)):
     929                                                print "%s: Expected interface descriptor in architecture '%s'" % (inname, architecture)
     930                                        else:
     931                                                output += "%s " % token
     932                                                arg0 = token
     933                                       
     934                                        context.add(TO)
     935                                        continue
     936                               
     937                                if (BIND in context):
     938                                        if (FIN in context):
     939                                                if (token != ";"):
     940                                                        print "%s: Expected ';' in architecture '%s'" % (inname, architecture)
     941                                                else:
     942                                                        output += "%s" % token
     943                                               
     944                                                context.remove(FIN)
     945                                                context.remove(BIND)
     946                                                continue
     947                                       
     948                                        if (VAR in context):
     949                                                if (not descriptor(token)):
     950                                                        print "%s: Expected second interface descriptor in architecture '%s'" % (inname, architecture)
     951                                                else:
     952                                                        if (not architecture in arch_properties):
     953                                                                arch_properties[architecture] = {}
     954                                                       
     955                                                        if (not 'bind' in arch_properties[architecture]):
     956                                                                arch_properties[architecture]['bind'] = []
     957                                                       
     958                                                        arch_properties[architecture]['bind'].append({'from': arg0.split(":"), 'to': token.split(":")})
     959                                                        arg0 = None
     960                                                       
     961                                                        output += "%s" % token
     962                                               
     963                                                context.add(FIN)
     964                                                context.remove(VAR)
     965                                                continue
     966                                       
     967                                        if (TO in context):
     968                                                if (token != "to"):
     969                                                        print "%s: Expected 'to' in architecture '%s'" % (inname, architecture)
     970                                                else:
     971                                                        output += "%s " % token
     972                                               
     973                                                context.add(VAR)
     974                                                context.remove(TO)
     975                                                continue
     976                                       
     977                                        if (not descriptor(token)):
     978                                                print "%s: Expected interface descriptor in architecture '%s'" % (inname, architecture)
     979                                        else:
     980                                                output += "%s " % token
     981                                                arg0 = token
     982                                       
     983                                        context.add(TO)
     984                                        continue
     985                               
     986                                if (INST in context):
     987                                        if (FIN in context):
     988                                                if (token != ";"):
     989                                                        print "%s: Expected ';' in architecture '%s'" % (inname, architecture)
     990                                                else:
     991                                                        output += "%s" % token
     992                                               
     993                                                context.remove(FIN)
     994                                                context.remove(INST)
     995                                                continue
     996                                       
     997                                        if (VAR in context):
     998                                                if (not identifier(token)):
     999                                                        print "%s: Expected instance name in architecture '%s'" % (inname, architecture)
     1000                                                else:
     1001                                                        if (not architecture in arch_properties):
     1002                                                                arch_properties[architecture] = {}
     1003                                                       
     1004                                                        if (not 'inst' in arch_properties[architecture]):
     1005                                                                arch_properties[architecture]['inst'] = []
     1006                                                       
     1007                                                        arch_properties[architecture]['inst'].append({'type': arg0, 'var': token})
     1008                                                        arg0 = None
     1009                                                       
     1010                                                        output += "%s" % token
     1011                                               
     1012                                                context.add(FIN)
     1013                                                context.remove(VAR)
     1014                                                continue
     1015                                       
     1016                                        if (not identifier(token)):
     1017                                                print "%s: Expected frame/architecture type in architecture '%s'" % (inname, architecture)
     1018                                        else:
     1019                                                output += "%s " % token
     1020                                                arg0 = token
     1021                                       
     1022                                        context.add(VAR)
     1023                                        continue
     1024                               
     1025                                if (token == "}"):
     1026                                        if (indent != 1):
     1027                                                print "%s: Wrong number of parentheses in architecture '%s'" % (inname, architecture)
     1028                                        else:
     1029                                                indent -= 1
     1030                                                output += "\n%s" % token
     1031                                       
     1032                                        context.remove(BODY)
     1033                                        context.add(NULL)
     1034                                        continue
     1035                               
     1036                                if (token == "inst"):
     1037                                        output += "\n%s%s " % (tabs(indent), token)
     1038                                        context.add(INST)
     1039                                        continue
     1040                               
     1041                                if (token == "bind"):
     1042                                        output += "\n%s%s " % (tabs(indent), token)
     1043                                        context.add(BIND)
     1044                                        continue
     1045                               
     1046                                if (token == "subsume"):
     1047                                        output += "\n%s%s " % (tabs(indent), token)
     1048                                        context.add(SUBSUME)
     1049                                        continue
     1050                               
     1051                                if (token == "delegate"):
     1052                                        output += "\n%s%s " % (tabs(indent), token)
     1053                                        context.add(DELEGATE)
     1054                                        continue
     1055                               
     1056                                print "%s: Unknown token '%s' in architecture '%s'" % (inname, token, architecture)
     1057                                continue
     1058                       
     1059                        if (HEAD in context):
     1060                                if (token == "{"):
     1061                                        output += "%s" % token
     1062                                        indent += 1
     1063                                        context.remove(HEAD)
     1064                                        context.add(BODY)
     1065                                        continue
     1066                               
     1067                                if (token == ";"):
     1068                                        output += "%s\n" % token
     1069                                        context.remove(HEAD)
     1070                                        context.remove(ARCH)
     1071                                        context.discard(SYSTEM)
     1072                                        continue
     1073                               
     1074                                if (not word(token)):
     1075                                        print "%s: Expected word in architecture head '%s'" % (inname, architecture)
     1076                                else:
     1077                                        output += "%s " % token
     1078                               
     1079                                continue
     1080                       
     1081                        if (not identifier(token)):
     1082                                print "%s: Expected architecture name" % inname
     1083                        else:
     1084                                architecture = token
     1085                                output += "%s " % token
     1086                               
     1087                                if (not architecture in arch_properties):
     1088                                        arch_properties[architecture] = {}
     1089                               
     1090                                arch_properties[architecture]['name'] = architecture
     1091                               
     1092                                if (SYSTEM in context):
     1093                                        arch_properties[architecture]['system'] = True
     1094                       
     1095                        context.add(HEAD)
     1096                        continue
     1097               
     1098                # "system architecture"
     1099               
     1100                if (SYSTEM in context):
     1101                        if (token != "architecture"):
     1102                                print "%s: Expected 'architecture'" % inname
     1103                        else:
     1104                                output += "%s " % token
     1105                       
     1106                        context.add(ARCH)
     1107                        continue
     1108               
     1109                if (token == "frame"):
     1110                        output += "\n%s " % token
     1111                        context.add(FRAME)
     1112                        continue
     1113               
     1114                if (token == "interface"):
     1115                        output += "\n%s " % token
     1116                        context.add(IFACE)
     1117                        continue
     1118               
     1119                if (token == "system"):
     1120                        output += "\n%s " % token
     1121                        context.add(SYSTEM)
     1122                        continue
     1123               
     1124                if (token == "architecture"):
     1125                        output += "\n%s " % token
     1126                        context.add(ARCH)
     1127                        continue
     1128               
     1129                print "%s: Unknown token '%s'" % (inname, token)
     1130       
    1411131        inf.close()
    1421132
    143 def recursion(root, output, level):
     1133def open_adl(base, root, inname, outdir, outname):
     1134        "Open Architecture Description file"
     1135       
     1136        global output
     1137        global context
     1138        global architecture
     1139        global interface
     1140        global frame
     1141        global protocol
     1142       
     1143        global arg0
     1144       
     1145        output = ""
     1146        context = set()
     1147        architecture = None
     1148        interface = None
     1149        frame = None
     1150        protocol = None
     1151        arg0 = None
     1152       
     1153        parse_adl(base, root, inname, False, 0)
     1154        output = output.strip()
     1155       
     1156        if (output != ""):
     1157                if (os.path.isfile(outname)):
     1158                        print "%s: File already exists, overwriting" % outname
     1159               
     1160                outf = file(outname, "w")
     1161                outf.write(output)
     1162                outf.close()
     1163        else:
     1164                if (os.path.isfile(outname)):
     1165                        print "%s: File already exists, but should be empty" % outname
     1166
     1167def recursion(base, root, output, level):
    1441168        "Recursive directory walk"
    1451169       
     
    1471171                canon = os.path.join(root, name)
    1481172               
    149                 if ((os.path.isfile(canon)) and (level > 0)):
     1173                if (os.path.isfile(canon)):
    1501174                        fcomp = split_tokens(canon, ["."])
    151                         if (fcomp[-1] == ".bp"):
    152                                 parse(canon, outf)
     1175                        cname = canon.split("/")
     1176                       
     1177                        if (fcomp[-1] == ".adl"):
     1178                                output_path = os.path.join(output, cname[-1])
     1179                                open_adl(base, root, canon, output, output_path)
    1531180               
    1541181                if (os.path.isdir(canon)):
    155                         recursion(canon, outf, level + 1)
     1182                        recursion(base, canon, output, level + 1)
    1561183
    1571184def main():
     1185        global iface_properties
     1186        global frame_properties
     1187        global arch_properties
     1188       
    1581189        if (len(sys.argv) < 2):
    1591190                usage(sys.argv[0])
     
    1621193        path = os.path.abspath(sys.argv[1])
    1631194        if (not os.path.isdir(path)):
    164                 print "<OUTPUT> is not a directory"
     1195                print "Error: <OUTPUT> is not a directory"
    1651196                return
    1661197       
    167         recursion(".", path, 0)
    168        
     1198        iface_properties = {}
     1199        frame_properties = {}
     1200        arch_properties = {}
     1201       
     1202        recursion(".", ".", path, 0)
     1203       
     1204        system_arch = get_system_arch()
     1205       
     1206        if (not system_arch is None):
     1207                dump_arch(system_arch, path)
     1208
    1691209if __name__ == '__main__':
    1701210        main()
  • contrib/arch/kernel/kernel.adl

    r743e17b re5d4294  
    77                unative_t sys_klog(int fd, const void *buf, size_t size);
    88        protocol:
    9                 ?sys_klog*
     9                ?sys_klog
    1010};
    1111
    1212interface kernel_console {
    1313                /* Enable kernel console */
    14                 uintptr_t sys_debug_enable_console(void);
     14                unative_t sys_debug_enable_console(void);
    1515               
    1616                /* Disable kernel console */
    17                 uintptr_t sys_debug_disable_console(void);
    18         protocol:
    19                 (?sys_debug_enable_console + ?sys_debug_disable_console)*
     17                unative_t sys_debug_disable_console(void);
     18        protocol:
     19                ?sys_debug_enable_console +
     20                ?sys_debug_disable_console
    2021};
    2122
     
    2425                unative_t sys_tls_set(unative_t addr);
    2526        protocol:
    26                 ?sys_tls_set*
     27                ?sys_tls_set
    2728};
    2829
     
    3738                unative_t sys_thread_get_id(thread_id_t *uspace_thread_id);
    3839        protocol:
    39                 (?sys_thread_create + ?sys_thread_get_id)* ; ?sys_thread_exit
     40                (
     41                        ?sys_thread_create +
     42                        ?sys_thread_get_id
     43                )* ;
     44                ?sys_thread_exit
    4045};
    4146
     
    4752                unative_t sys_task_get_id(task_id_t *uspace_task_id);
    4853        protocol:
    49                 (?sys_task_set_name + ?sys_task_get_id)*
     54                ?sys_task_set_name +
     55                ?sys_task_get_id
    5056};
    5157
     
    5460                unative_t sys_program_spawn_loader(char *uspace_name, size_t name_len);
    5561        protocol:
    56                 ?sys_program_spawn_loader*
     62                ?sys_program_spawn_loader
    5763};
    5864
     
    6470                unative_t sys_futex_wakeup(uintptr_t uaddr);
    6571        protocol:
    66                 (?sys_futex_sleep_timeout + ?sys_futex_wakeup)*
     72                ?sys_futex_sleep_timeout +
     73                ?sys_futex_wakeup
    6774};
    6875
     
    7178                unative_t sys_smc_coherence(uintptr_t va, size_t size);
    7279        protocol:
    73                 ?sys_smc_coherence*
     80                ?sys_smc_coherence
    7481};
    7582
     
    8794                unative_t sys_as_area_destroy(uintptr_t address);
    8895        protocol:
    89                 (?sys_as_area_create + ?sys_as_area_resize + ?sys_as_area_change_flags + ?sys_as_area_destroy)*
     96                ?sys_as_area_create +
     97                ?sys_as_area_resize +
     98                ?sys_as_area_change_flags +
     99                ?sys_as_area_destroy
    90100};
    91101
     
    124134                unative_t sys_ipc_poke(void);
    125135        protocol:
    126                 (?sys_ipc_call_sync_fast + ?sys_ipc_call_sync_slow + ?sys_ipc_call_async_fast + ?sys_ipc_call_async_slow + ?sys_ipc_forward_fast + ?sys_ipc_forward_slow + ?sys_ipc_answer_fast + ?sys_ipc_answer_slow + ?sys_ipc_hangup + ?sys_ipc_wait_for_call + ?sys_ipc_poke)*
     136                ?sys_ipc_call_sync_fast +
     137                ?sys_ipc_call_sync_slow +
     138                ?sys_ipc_call_async_fast +
     139                ?sys_ipc_call_async_slow +
     140                ?sys_ipc_forward_fast +
     141                ?sys_ipc_forward_slow +
     142                ?sys_ipc_answer_fast +
     143                ?sys_ipc_answer_slow +
     144                ?sys_ipc_hangup +
     145                ?sys_ipc_wait_for_call +
     146                ?sys_ipc_poke
    127147};
    128148
     
    131151                unative_t sys_event_subscribe(unative_t evno, unative_t method);
    132152        protocol:
    133                 ?sys_event_subscribe*
     153                ?sys_event_subscribe
    134154};
    135155
     
    141161                unative_t sys_cap_revoke(sysarg64_t *uspace_taskid_arg, cap_t caps);
    142162        protocol:
    143                 (?sys_cap_grant + ?sys_cap_rewoke)*
     163                ?sys_cap_grant +
     164                ?sys_cap_rewoke
    144165};
    145166
     
    163184                unative_t sys_ipc_unregister_irq(inr_t inr, devno_t devno);
    164185        protocol:
    165                 (?sys_enable_iospace + ?sys_physmem_map + ?sys_device_assign_devno + ?sys_preempt_control + ?sys_ipc_register_irq + ?sys_ipc_unregister_irq)*
     186                ?sys_enable_iospace +
     187                ?sys_physmem_map +
     188                ?sys_device_assign_devno +
     189                ?sys_preempt_control +
     190                ?sys_ipc_register_irq +
     191                ?sys_ipc_unregister_irq
    166192};
    167193
     
    173199                unative_t sys_sysinfo_value(unatice_t ptr, unative_t len);
    174200        protocol:
    175                 (?sys_sysinfo_valid + ?sys_sysinfo_value)*
     201                ?sys_sysinfo_valid +
     202                ?sys_sysinfo_value
    176203};
    177204
     
    180207                unative_t sys_ipc_connect_kbox(sysarg64_t *uspace_taskid_arg);
    181208        protocol:
    182                 ?sys_ipc_connect_kbox*
     209                ?sys_ipc_connect_kbox
    183210};
    184211
  • contrib/arch/uspace/lib/libc/bind

    r743e17b re5d4294  
    1 /* Bindings to kernel interfaces */
     1/* Bind %% to kernel interfaces */
    22bind %%:kernel_klog to kernel:kernel_klog;
    33bind %%:kernel_console to kernel:kernel_console;
  • contrib/arch/uspace/lib/libc/fnc.devmap_device_get_count

    r743e17b re5d4294  
    11[fnc.devmap_get_phone] ;
    2 !dm_client.device_get_count
     2tentative {
     3        !dm_client.device_get_count
     4}
  • contrib/arch/uspace/lib/libc/fnc.devmap_device_get_devices

    r743e17b re5d4294  
    11[fnc.devmap_get_phone] ;
    2 !dm_client.device_get_devices {
    3         !dm_client.ipc_m_data_read /* buffer */
     2tentative {
     3        !dm_client.device_get_devices {
     4                !dm_client.ipc_m_data_read /* buffer */
     5        }
    46}
  • contrib/arch/uspace/lib/libc/fnc.devmap_device_get_handle

    r743e17b re5d4294  
    11[fnc.devmap_get_phone] ;
    2 !dm_client.device_get_handle {
    3         !dm_client.ipc_m_data_write /* name */
     2tentative {
     3        !dm_client.device_get_handle {
     4                !dm_client.ipc_m_data_write /* name */
     5        }
    46}
  • contrib/arch/uspace/srv/bd/rd/rd.adl

    r743e17b re5d4294  
    11frame rd {
    22        provides:
    3                 block_device bd;
     3                bd bd;
    44        requires:
    5                 naming_service ns;
    6                 device_mapper_driver dm_driver;
    75                [/uspace/lib/libc/requires]
     6                ns ns;
     7                devmap_driver devmap_driver;
    88        protocol:
    99                [/uspace/lib/libc/protocol] +
  • contrib/arch/uspace/srv/bd/rd/rd.bp

    r743e17b re5d4294  
    1 [/lib/libc/fnc.devmap_driver_register] ;
    2 [/lib/libc/fnc.devmap_device_register]
     1[/uspace/lib/libc/fnc.devmap_driver_register] ;
     2[/uspace/lib/libc/fnc.devmap_device_register]
  • contrib/arch/uspace/srv/console/console.bp

    r743e17b re5d4294  
    22!kbd.IPC_CONNECT_TO_ME ;
    33!ns.IPC_CONNECT_ME_TO /* fb */ ;
    4 [devmap_driver_register] ;
     4[/uspace/lib/libc/fnc.devmap_driver_register] ;
    55!fb.FB_GET_RESOLUTION ;
    66(
    7         [vp_create] +
    8         [vp_switch]
     7        [fnc.vp_create] +
     8        [fnc.vp_switch]
    99)* ;
    10 [make_pixmap]* ;
    11 [make_anim] ;
    12 [vp_switch] ;
     10[fnc.make_pixmap]* ;
     11[fnc.make_anim] ;
     12[fnc.vp_switch] ;
    1313!fb.FB_FLUSH ;
    1414!fb.FB_GET_CSIZE ;
    1515!fb.FB_GET_COLOR_CAP ;
    1616!fb.IPC_M_SHARE_OUT ;
    17 [devmap_device_register]* ;
    18 [gcons_redraw_console] ;
    19 [set_rgb_color] ;
    20 [screen_clear] ;
    21 [curs_goto] ;
    22 [curs_visibility] ;
     17[/uspace/lib/libc/fnc.devmap_device_register]* ;
     18[fnc.gcons_redraw_console] ;
     19[fnc.set_rgb_color] ;
     20[fnc.screen_clear] ;
     21[fnc.curs_goto] ;
     22[fnc.curs_visibility] ;
    2323(
    2424        ?console.IPC_M_CONNECT_ME_TO ;
    25         [gcons_notify_connect] ;
     25        [fnc.gcons_notify_connect] ;
    2626        (
    2727                ?console.VFS_OUT_READ {
    28                         [cons_read]
     28                        [fnc.cons_read]
    2929                } +
    3030               
    3131                ?console.VFS_OUT_WRITE {
    32                         [cons_write]
     32                        [fnc.cons_write]
    3333                } +
    3434               
    3535                ?console.VFS_OUT_SYNC {
    36                         [fb_pending_flush] ;
     36                        [fnc.fb_pending_flush] ;
    3737                        (
    3838                                (
    3939                                        !fb.FB_FLUSH ;
    40                                         [curs_goto]
     40                                        [fnc.curs_goto]
    4141                                ) +
    4242                                NULL
     
    5959               
    6060                ?console.CONSOLE_SET_STYLE {
    61                         [fb_pending_flush] ;
     61                        [fnc.fb_pending_flush] ;
    6262                        (
    63                                 [set_style] +
     63                                [fnc.set_style] +
    6464                                NULL
    6565                        )
     
    6767               
    6868                ?console.CONSOLE_SET_COLOR {
    69                         [fb_pending_flush] ;
     69                        [fnc.fb_pending_flush] ;
    7070                        (
    71                                 [set_color] +
     71                                [fnc.set_color] +
    7272                                NULL
    7373                        )
     
    7575               
    7676                ?console.CONSOLE_SET_RGB_COLOR {
    77                         [fb_pending_flush] ;
     77                        [fnc.fb_pending_flush] ;
    7878                        (
    79                                 [set_rgb_color] +
     79                                [fnc.set_rgb_color] +
    8080                                NULL
    8181                        )
     
    8383               
    8484                ?console.CONSOLE_CURSOR_VISIBILITY {
    85                         [fb_pending_flush] ;
     85                        [fnc.fb_pending_flush] ;
    8686                        (
    87                                 [curs_visibility] +
     87                                [fnc.curs_visibility] +
    8888                                NULL
    8989                        )
     
    9797       
    9898        ?console.IPC_M_PHONE_HUNGUP {
    99                 [gcons_notify_disconnect]
     99                [fnc.gcons_notify_disconnect]
    100100        }
    101101)*
  • contrib/arch/uspace/srv/devmap/devmap.adl

    r743e17b re5d4294  
    1 interface device_mapper_driver {
     1interface devmap_driver {
    22                /* Establish connection (iface is DEVMAP_DRIVER) */
    33                ipcarg_t ipc_m_connect_me_to(in ipcarg_t iface);
    44               
    55                /* Register as a new driver */
    6                 ipcarg_t driver_register(void);
     6                ipcarg_t driver_register(in_copy string name);
    77               
    88                /* Unregister all devices and the driver itself */
     
    1010               
    1111                /* Register new device and return handle */
    12                 ipcarg_t device_register(out ipcarg_t handle);
     12                ipcarg_t device_register(in_copy string name, out ipcarg_t handle);
    1313               
    1414                /* Unregister device */
     
    1616               
    1717                /* Resolve device name to handle */
    18                 ipcarg_t device_get_handle(in ipcarg_t flags);
     18                ipcarg_t device_get_handle(in ipcarg_t flags, in_copy string name);
    1919               
    2020                /* Get device name for a given handle */
    2121                ipcarg_t device_get_name(in ipcarg_t handle);
    2222               
    23                 /* Transfer driver or device name */
    24                 ipcarg_t ipc_m_data_write(in ipcarg_t src_addr, in ipcarg_t src_size, out ipcarg_t dst_addr, out ipcarg_t dst_size);
    25                
    2623                /* Close connection */
    2724                ipcarg_t ipc_m_phone_hungup(void);
    2825        protocol:
    29                 [device_mapper_driver.bp]
     26                [devmap_driver.bp]
    3027};
    3128
    32 interface device_mapper_client {
     29interface devmap_client {
    3330                /* Establish connection (iface is DEVMAP_CLIENT) or forward to device (iface is DEVMAP_CONNECT_TO_DEVICE) */
    3431                ipcarg_t ipc_m_connect_me_to(in ipcarg_t iface, in ipcarg_t handle);
    3532               
    3633                /* Resolve device name to handle */
    37                 ipcarg_t device_get_handle(in ipcarg_t flags);
     34                ipcarg_t device_get_handle(in ipcarg_t flags, in_copy string name);
    3835               
    3936                /* Get device name for a given handle */
     
    5047               
    5148                /* Get an array of (device_name, handle) pairs */
    52                 ipcarg_t device_get_devices(void)
    53                
    54                 /* Transfer device name from client */
    55                 ipcarg_t ipc_m_data_write(in ipcarg_t src_addr, in ipcarg_t src_size, out ipcarg_t dst_addr, out ipcarg_t dst_size);
    56                
    57                 /* Transfer (device_name, handle) pairs to client */
    58                 ipcarg_t ipc_m_data_read(in ipcarg_t src_addr, in ipcarg_t src_size, out ipcarg_t dst_addr, out ipcarg_t dst_size);
     49                ipcarg_t device_get_devices(out_copy stream data);
    5950               
    6051                /* Close connection */
    6152                ipcarg_t ipc_m_phone_hungup(void);
    6253        protocol:
    63                 [device_mapper_client.bp]
     54                [devmap_client.bp]
    6455       
    6556};
     
    6758frame devmap {
    6859        provides:
    69                 device_mapper_driver dm_driver;
    70                 device_mapper_client dm_client;
     60                devmap_driver devmap_driver;
     61                devmap_client devmap_client;
    7162        requires:
    72                 [/lib/libc/iface.requires]
     63                [/uspace/lib/libc/requires]
    7364        protocol:
    74                 [devmap.bp]
     65                [devmap_server.bp]
    7566};
  • contrib/arch/uspace/srv/kbd/kbd.bp

    r743e17b re5d4294  
     1?ipc_m_connect_me_to ;
    12(
    2         !ns.IPC_M_CONNECT_ME_TO /* cir */ +
    3         NULL
    4 ) ;
    5 !ns.IPC_M_CONNECT_TO_ME ;
    6 (
    7         ?kbd.IPC_M_CONNECT_ME_TO ;
    8         (
    9                 (
    10                         ?kbd.KBD_YIELD +
    11                         ?kbd.KBD_RECLAIM +
    12                 ) |
    13                 !console.KBD_EVENT
    14         )* ;
    15         ?kbd.IPC_M_PHONE_HUNGUP
     3        ?ipc_m_connect_to_me +
     4        ?yield +
     5        ?reclam
    166)* ;
    17 (
    18         !cir.IPC_M_PHONE_HUNGUP +
    19         NULL
    20 )
     7?ipc_m_phone_hungup
  • contrib/arch/uspace/srv/loader/loader.bp

    r743e17b re5d4294  
    1 !ns.NS_ID_INTRO ;
    2 !ns.IPC_M_CONNECT_TO_ME ;
    31(
    4         ?loader.LOADER_GET_TASKID {
    5                 ?loader.IPC_M_DATA_READ /* task id */
     2        ?get_taskid {
     3                ?ipc_m_data_read /* task ID */
    64        } +
    75       
    8         ?loader.LOADER_SET_PATHNAME {
    9                 ?loader.IPC_M_DATA_WRITE /* path */
     6        ?set_pathname {
     7                ?ipc_m_data_write /* pathname */
    108        } +
    119       
    12         ?loader.LOADER_SET_ARGS {
    13                 ?loader.IPC_M_DATA_WRITE /* arguments */
     10        ?set_args {
     11                ?ipc_m_data_write /* arguments */
    1412        } +
    1513       
    16         ?loader.LOADER_SET_FILES {
    17                 ?loader.IPC_M_DATA_WRITE /* files */
     14        ?set_files {
     15                ?ipc_m_data_write /* files */
    1816        } +
    1917       
    20         ?loader.LOADER_LOAD
     18        ?load
    2119)* ;
    2220(
    23         ?loader.LOADER_RUN +
    24         ?loader.IPC_M_PHONE_HUNGUP
     21        ?run +
     22        ?ipc_m_phone_hungup
    2523)
  • contrib/arch/uspace/srv/ns/ns.adl

    r743e17b re5d4294  
    1 interface naming_service {
     1interface ns {
    22                /* Register a clonable service or a generic service */
    33                ipcarg_t ipc_m_connect_to_me(in ipcarg_t service);
     
    2424                ipcarg_t ipc_m_phone_hungup(void);
    2525        protocol:
    26                 [naming_service.bp]
     26                [ns.bp]
    2727};
    2828
    2929frame ns {
    3030        provides:
    31                 naming_service ns;
     31                ns ns;
    3232        requires:
    3333                [/uspace/lib/libc/requires]
  • contrib/arch/uspace/srv/pci/pci.bp

    r743e17b re5d4294  
    1 !ns.IPC_M_CONNECT_TO_ME ;
    2 (
    3         ?pci.IPC_M_CONNECT_ME_TO ;
    4         ?pci.IPC_M_PHONE_HUNGUP
    5 )*
     1?ipc_m_connect_me_to ;
     2?ipc_m_phone_hungup
  • contrib/arch/uspace/srv/vfs/vfs.bp

    r743e17b re5d4294  
    1 !ns.IPC_M_CONNECT_TO_ME ;
     1?ipc_m_connect_me_to ;
    22(
    3         ?vfs.IPC_M_CONNECT_ME_TO ;
    4         (
    5                 ?vfs.VFS_IN_REGISTER {
    6                         ?vfs.IPC_M_DATA_WRITE ;
    7                         ?vfs.IPC_M_CONNECT_TO_ME ;
    8                         ?vfs.IPC_M_SHARE_IN
    9                 } +
    10                
    11                 ?vfs.VFS_IN_MOUNT {
    12                         ?vfs.IPC_M_DATA_WRITE /* mount point */ ;
    13                         ?vfs.IPC_M_DATA_WRITE /* mount options */ ;
    14                         ?vfs.IPC_M_DATA_WRITE /* fs name */ ;
    15                         ?vfs.IPC_M_PING ;
    16                         (
    17                                
    18                                 !fs.VFS_OUT_MOUNTED ;
    19                                 !fs.IPC_M_DATA_WRITE /* mount options */
    20                         ) /* root fs */ +
    21                         (
    22                                 !fs.VFS_OUT_MOUNT ;
    23                                 !fs.IPC_M_CONNECTION_CLONE ;
    24                                 !fs.VFS_M_DATA_WRITE /* mount options */
    25                         ) /* non-root fs */
    26                 } +
    27                
    28                 ?vfs.VFS_IN_OPEN {
    29                         ?vfs.IPC_M_DATA_WRITE /* path */ ;
    30                         [vfs_lookup_internal] ;
    31                         (
    32                                 (
    33                                         [vfs_grab_phone] ;
    34                                         !fs.VFS_OUT_TRUNCATE ;
    35                                         [vfs_release_phone]
    36                                 ) +
    37                                 NULL
    38                         )
    39                 } +
    40                
    41                 ?vfs.VFS_IN_OPEN_NODE {
    42                         [vfs_grab_phone] ;
    43                         !fs.VFS_OUT_OPEN_NODE ;
    44                         [vfs_release_phone] ;
    45                         (
    46                                 (
    47                                         [vfs_grab_phone] ;
    48                                         !fs.VFS_OUT_TRUNCATE ;
    49                                         [vfs_release_phone]
    50                                 ) +
    51                                 NULL
    52                         )
    53                 } +
    54                
    55                 ?vfs.VFS_IN_CLOSE {
    56                         [vfs_grab_phone] ;
    57                         !fs.VFS_OUT_CLOSE ;
    58                         [vfs_release_phone]
    59                 } +
    60                
    61                 ?vfs.VFS_IN_READ {
    62                         ?vfs.IPC_M_DATA_READ {
    63                                 [vfs_grab_phone] ;
    64                                 !fs.VFS_OUT_READ /* payload */ ;
    65                                 !fs.IPC_M_DATA_READ /* forwarded */ ;
    66                                 [vfs_release_phone]
     3        ?register {
     4                ?ipc_m_data_write /* fs name */ ;
     5                tentative {
     6                        /* callback connection */
     7                        ?ipc_m_connect_to_me ;
     8                        ?ipc_m_share_in
     9                }
     10        } +
     11       
     12        ?mount {
     13                ?ipc_m_data_write /* mount point */ ;
     14                tentative {
     15                        ?ipc_m_data_write /* mount options */ ;
     16                        tentative {
     17                                ?ipc_m_data_write /* fs name */ ;
     18                                tentative {
     19                                        ?ipc_m_ping ;
     20                                        tentative {
     21                                                (
     22                                                        /* root fs */
     23                                                        !fs.mounted ;
     24                                                        !fs.ipc_m_data_write /* mount options */
     25                                                ) +
     26                                                (
     27                                                        /* non-root fs */
     28                                                        tentative {
     29                                                                [fnc.vfs_lookup_internal] ;
     30                                                                tentative {
     31                                                                        [fnc.vfs_grab_phone] ;
     32                                                                        [fnc.vfs_grab_phone] ;
     33                                                                        !fs.mount ;
     34                                                                        !fs.ipc_m_connection_clone ;
     35                                                                        [fnc.vfs_release_phone] ;
     36                                                                        tentative {
     37                                                                                !fs.vfs_m_data_write /* mount options */
     38                                                                        } ;
     39                                                                        [fnc.vfs_release_phone]
     40                                                                }
     41                                                        }
     42                                                )
     43                                        }
     44                                }
    6745                        }
    68                 } +
    69                
    70                 ?vfs.VFS_IN_WRITE {
    71                         ?vfs.IPC_M_DATA_WRITE {
    72                                 [vfs_grab_phone] ;
    73                                 !fs.VFS_OUT_WRITE /* payload */ ;
    74                                 !fs.IPC_M_DATA_WRITE /* forwarded */ ;
    75                                 [vfs_release_phone]
     46                }
     47        } +
     48       
     49        ?open {
     50                tentative {
     51                        ?ipc_m_data_write /* path */ ;
     52                        tentative {
     53                                [fnc.vfs_lookup_internal] ;
     54                                tentative {
     55                                        [fnc.vfs_grab_phone] ;
     56                                        !fs.truncate ;
     57                                        [fnc.vfs_release_phone]
     58                                }
    7659                        }
    77                 } +
    78                
    79                 ?vfs.VFS_IN_SEEK +
    80                
    81                 ?vfs.VFS_IN_TRUNCATE {
    82                         [vfs_grab_phone] ;
    83                         !fs.VFS_OUT_TRUNCATE ;
    84                         [vfs_release_phone]
    85                 } +
    86                
    87                 ?vfs.VFS_IN_FSTAT {
    88                         ?vfs.IPC_M_DATA_READ /* struct stat */ {
    89                                 [vfs_grab_phone] ;
    90                                 !fs.VFS_OUT_STAT ;
    91                                 !fs.IPC_M_DATA_READ /* forwarded */ ;
    92                                 [vfs_release_phone]
     60                }
     61        } +
     62       
     63        ?open_node {
     64                [fnc.vfs_open_node_internal] ;
     65                tentative {
     66                        [fnc.vfs_grab_phone] ;
     67                        !fs.truncate ;
     68                        [fnc.vfs_release_phone]
     69                }
     70        } +
     71       
     72        ?close {
     73                tentative {
     74                        [fnc.vfs_grab_phone] ;
     75                        !fs.close ;
     76                        [fnc.vfs_release_phone]
     77                }
     78        } +
     79       
     80        ?read {
     81                tentative {
     82                        ?ipc_m_data_read {
     83                                [fnc.vfs_grab_phone] ;
     84                                !fs.read ;
     85                                !fs.ipc_m_data_read /* forward payload */ ;
     86                                [fnc.vfs_release_phone]
    9387                        }
    94                 } +
    95                
    96                 ?vfs.VFS_IN_STAT {
    97                         ?vfs.IPC_M_DATA_WRITE /* path */ ;
    98                         ?vfs.IPC_M_DATA_READ /* struct stat */ {
    99                                 [vfs_lookup_internal] ;
    100                                 !fs.VFS_OUT_STAT ;
    101                                 !fs.IPC_M_DATA_READ /* forwarded */
     88                }
     89        } +
     90       
     91        ?write {
     92                tentative {
     93                        ?ipc_m_data_write {
     94                                [fnc.vfs_grab_phone] ;
     95                                !fs.write ;
     96                                !fs.ipc_m_data_write /* forward payload */ ;
     97                                [fnc.vfs_release_phone]
    10298                        }
    103                 } +
    104                
    105                 ?vfs.VFS_IN_MKDIR {
    106                         ?vfs.IPC_M_DATA_WRITE /* path */ ;
    107                         [vfs_lookup_internal]
    108                 } +
    109                
    110                 ?vfs.VFS_IN_UNLINK {
    111                         ?vfs.IPC_M_DATA_WRITE /* path */ ;
    112                         [vfs_lookup_internal]
    113                 } +
    114                
    115                 ?vfs.VFS_IN_RENAME {
    116                         ?vfs.IPC_M_DATA_WRITE /* old path */ ;
    117                         ?vfs.IPC_M_DATE_WRITE /* new path */ ;
    118                         [vfs_lookup_internal] /* lookup old path */ ;
    119                         [vfs_lookup_internal] /* lookup parent of new path */ ;
    120                         [vfs_lookup_internal] /* destroy old link for the new path */ ;
    121                         [vfs_lookup_internal] /* create new link for the new path */ ;
    122                         [vfs_lookup_internal] /* destroy link for the old path */
    123                 } +
    124                
    125                 ?vfs.VFS_IN_SYNC {
    126                         !fs.VFS_OUT_SYNC
    12799                }
    128                
    129         )* ;
    130         ?vfs.IPC_M_PHONE_HUNGUP
    131 )*
     100        } +
     101       
     102        ?truncate {
     103                tentative {
     104                        [fnc.vfs_grab_phone] ;
     105                        !fs.truncate ;
     106                        [fnc.vfs_release_phone]
     107                }
     108        } +
     109       
     110        ?fstat {
     111                tentative {
     112                        ?ipc_m_data_read /* struct stat */ {
     113                                [fnc.vfs_grab_phone] ;
     114                                !fs.stat ;
     115                                !fs.ipc_m_data_read /* forward struct stat */ ;
     116                                [fnc.vfs_release_phone]
     117                        }
     118                }
     119        } +
     120       
     121        ?stat {
     122                ?ipc_m_data_write /* path */ ;
     123                tentative {
     124                        ?ipc_m_data_read /* struct stat */ {
     125                                [fnc.vfs_lookup_internal] ;
     126                                tentative {
     127                                        !fs.stat ;
     128                                        !fs.ipc_m_data_read /* forward struct stat */
     129                                }
     130                        }
     131                }
     132        } +
     133       
     134        ?mkdir {
     135                ?ipc_m_data_write /* path */ ;
     136                tentative {
     137                        [fnc.vfs_lookup_internal]
     138                }
     139        } +
     140       
     141        ?unlink {
     142                ?ipc_m_data_write /* path */ ;
     143                tentative {
     144                        [fnc.vfs_lookup_internal]
     145                }
     146        } +
     147       
     148        ?rename {
     149                ?ipc_m_data_write /* old path */ ;
     150                tentative {
     151                        ?ipc_m_data_write /* new path */ ;
     152                        tentative {
     153                                [fnc.vfs_lookup_internal] /* lookup old path */ ;
     154                                tentative {
     155                                        [fnc.vfs_lookup_internal] /* lookup parent of new path */ ;
     156                                        tentative {
     157                                                [fnc.vfs_lookup_internal] /* destroy old link for the new path */ ;
     158                                                tentative {
     159                                                        [fnc.vfs_lookup_internal] /* create new link for the new path */ ;
     160                                                        tentative {
     161                                                                [fnc.vfs_lookup_internal] /* destroy link for the old path */
     162                                                        }
     163                                                }
     164                                        }
     165                                }
     166                        }
     167                }
     168        } +
     169       
     170        ?sync {
     171                tentative {
     172                        !fs.sync
     173                }
     174        } +
     175       
     176        ?seek
     177       
     178)* ;
     179?ipc_m_phne_hungup
  • contrib/highlight/adl.syntax

    r743e17b re5d4294  
    1818       
    1919        keyword whole ipcarg_t yellow
     20        keyword whole string yellow
     21        keyword whole stream yellow
    2022        keyword whole void yellow
    2123       
    2224        keyword whole in yellow
     25        keyword whole in_copy yellow
    2326        keyword whole out yellow
     27        keyword whole out_copy yellow
    2428       
    2529        keyword whole protocol yellow
  • contrib/highlight/bp.syntax

    r743e17b re5d4294  
    44context default
    55        keyword whole NULL yellow
    6         keyword whole try yellow
    7         keyword whole catch yellow
    86        keyword whole tentative yellow
    97       
  • kernel/arch/ia64/_link.ld.in

    r743e17b re5d4294  
    77 */
    88
     9#define LOAD_ADDRESS_V  0xe000000004404000
     10#define LOAD_ADDRESS_P  0x0000000004404000
     11
    912ENTRY(kernel_image_start)
    1013
    1114SECTIONS {
    12         .image 0xe000000004404000: AT (0x0000000004404000) {
     15        .image LOAD_ADDRESS_V: AT (LOAD_ADDRESS_P) {
    1316                ktext_start = .;
    1417                *(K_TEXT_START);
     
    2124                *(.opd)
    2225                *(.data .data.*)
     26                hardcoded_load_address = .;
     27                QUAD(LOAD_ADDRESS_V);
     28                hardcoded_ktext_size = .;
     29                QUAD(ktext_end - ktext_start);
     30                hardcoded_kdata_size = .;
     31                QUAD(kdata_end - kdata_start);
    2332                *(.got .got.*)
    2433                *(.sdata)
     
    3847        }
    3948
    40         _hardcoded_ktext_size = ktext_end - ktext_start;
    41         _hardcoded_kdata_size = kdata_end - kdata_start;
    42         _hardcoded_load_address = 0xe000000004404000;
    43 
    4449}
  • kernel/arch/ia64/src/ivt.S

    r743e17b re5d4294  
    391391
    392392    /* 10. call handler */
    393         movl r1 = _hardcoded_load_address
     393        movl r1 = kernel_image_start
    394394   
    395395        mov b1 = loc2
  • kernel/arch/ia64/src/start.S

    r743e17b re5d4294  
    186186        movl r20 = (VRN_KERNEL << VRN_SHIFT) ;;
    187187        or r20 = r20, r1 ;;
    188         movl r1 = _hardcoded_load_address
     188        movl r1 = kernel_image_start
    189189       
    190190        /*
    191          * Initialize hardcoded_* variables. Do only BSP
     191         * Initialize bootinfo on BSP.
    192192         */
    193 (p3)    movl r14 = _hardcoded_ktext_size
    194 (p3)    movl r15 = _hardcoded_kdata_size
    195 (p3)    movl r16 = _hardcoded_load_address ;;
    196 (p3)    addl r17 = @gprel(hardcoded_ktext_size), gp
    197 (p3)    addl r18 = @gprel(hardcoded_kdata_size), gp
    198 (p3)    addl r19 = @gprel(hardcoded_load_address), gp
    199 (p3)    addl r21 = @gprel(bootinfo), gp
    200                 ;;
    201 (p3)    st8 [r17] = r14
    202 (p3)    st8 [r18] = r15
    203 (p3)    st8 [r19] = r16
     193(p3)    addl r21 = @gprel(bootinfo), gp ;;
    204194(p3)    st8 [r21] = r20
    205195       
  • kernel/generic/include/main/main.h

    r743e17b re5d4294  
    3838#include <arch/types.h>
    3939
     40extern size_t hardcoded_kdata_size;
     41extern size_t hardcoded_ktext_size;
     42extern uintptr_t hardcoded_load_address;
    4043extern uintptr_t stack_safe;
    4144
  • kernel/generic/src/main/main.c

    r743e17b re5d4294  
    101101context_t ctx;
    102102
    103 /*
    104  * These 'hardcoded' variables will be intialized by
    105  * the linker or the low level assembler code with
    106  * appropriate sizes and addresses.
    107  */
    108 
    109 /** Virtual address of where the kernel is loaded. */
    110 uintptr_t hardcoded_load_address = 0;
    111 /** Size of the kernel code in bytes. */
    112 size_t hardcoded_ktext_size = 0;
    113 /** Size of the kernel data in bytes. */
    114 size_t hardcoded_kdata_size = 0;
    115103/** Lowest safe stack virtual address. */
    116104uintptr_t stack_safe = 0;               
  • uspace/srv/vfs/vfs_ops.c

    r743e17b re5d4294  
    934934{
    935935        int fd = IPC_GET_ARG1(*request);
    936         size_t size = IPC_GET_ARG2(*request);
    937936        ipcarg_t rc;
    938937
Note: See TracChangeset for help on using the changeset viewer.