OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [kernel/] [utsname.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 *  Copyright (C) 2004 IBM Corporation
3
 *
4
 *  Author: Serge Hallyn <serue@us.ibm.com>
5
 *
6
 *  This program is free software; you can redistribute it and/or
7
 *  modify it under the terms of the GNU General Public License as
8
 *  published by the Free Software Foundation, version 2 of the
9
 *  License.
10
 */
11
 
12
#include <linux/module.h>
13
#include <linux/uts.h>
14
#include <linux/utsname.h>
15
#include <linux/version.h>
16
#include <linux/err.h>
17
 
18
/*
19
 * Clone a new ns copying an original utsname, setting refcount to 1
20
 * @old_ns: namespace to clone
21
 * Return NULL on error (failure to kmalloc), new ns otherwise
22
 */
23
static struct uts_namespace *clone_uts_ns(struct uts_namespace *old_ns)
24
{
25
        struct uts_namespace *ns;
26
 
27
        ns = kmalloc(sizeof(struct uts_namespace), GFP_KERNEL);
28
        if (!ns)
29
                return ERR_PTR(-ENOMEM);
30
 
31
        down_read(&uts_sem);
32
        memcpy(&ns->name, &old_ns->name, sizeof(ns->name));
33
        up_read(&uts_sem);
34
        kref_init(&ns->kref);
35
        return ns;
36
}
37
 
38
/*
39
 * Copy task tsk's utsname namespace, or clone it if flags
40
 * specifies CLONE_NEWUTS.  In latter case, changes to the
41
 * utsname of this process won't be seen by parent, and vice
42
 * versa.
43
 */
44
struct uts_namespace *copy_utsname(unsigned long flags, struct uts_namespace *old_ns)
45
{
46
        struct uts_namespace *new_ns;
47
 
48
        BUG_ON(!old_ns);
49
        get_uts_ns(old_ns);
50
 
51
        if (!(flags & CLONE_NEWUTS))
52
                return old_ns;
53
 
54
        new_ns = clone_uts_ns(old_ns);
55
 
56
        put_uts_ns(old_ns);
57
        return new_ns;
58
}
59
 
60
void free_uts_ns(struct kref *kref)
61
{
62
        struct uts_namespace *ns;
63
 
64
        ns = container_of(kref, struct uts_namespace, kref);
65
        kfree(ns);
66
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.