Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
85f7c390
Commit
85f7c390
authored
Nov 21, 2002
by
Richard Henderson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ALPHA] Update clone syscall for child_tid argument.
parent
14751427
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
12 deletions
+13
-12
arch/alpha/kernel/entry.S
arch/alpha/kernel/entry.S
+6
-6
arch/alpha/kernel/process.c
arch/alpha/kernel/process.c
+7
-6
No files found.
arch/alpha/kernel/entry.S
View file @
85f7c390
...
@@ -688,12 +688,13 @@ __kernel_execve:
...
@@ -688,12 +688,13 @@ __kernel_execve:
.
ent
sys_fork
.
ent
sys_fork
sys_fork
:
sys_fork
:
.
prologue
0
.
prologue
0
mov
$sp
,
$
19
mov
$sp
,
$
21
bsr
$
1
,
do_switch_stack
bsr
$
1
,
do_switch_stack
/
*
A
fork
is
the
same
as
clone
(
SIGCHLD
,
0
)
; */
bis
$
31
,
SIGCHLD
,
$
16
bis
$
31
,
SIGCHLD
,
$
16
mov
$
31
,
$
17
mov
$
31
,
$
17
mov
$
31
,
$
18
mov
$
31
,
$
18
mov
$
31
,
$
19
mov
$
31
,
$
20
jsr
$
26
,
alpha_clone
jsr
$
26
,
alpha_clone
bsr
$
1
,
undo_switch_stack
bsr
$
1
,
undo_switch_stack
ret
ret
...
@@ -704,10 +705,9 @@ sys_fork:
...
@@ -704,10 +705,9 @@ sys_fork:
.
ent
sys_clone
.
ent
sys_clone
sys_clone
:
sys_clone
:
.
prologue
0
.
prologue
0
mov
$sp
,
$
19
mov
$sp
,
$
21
bsr
$
1
,
do_switch_stack
bsr
$
1
,
do_switch_stack
/
*
$
16
,
$
17
,
$
18
,
$
19
come
from
the
user
; $19 is used later
/
*
$
16
,
$
17
,
$
18
,
$
19
,
$
20
come
from
the
user
.
*/
via
pt_regs
->
r19
.
*/
jsr
$
26
,
alpha_clone
jsr
$
26
,
alpha_clone
bsr
$
1
,
undo_switch_stack
bsr
$
1
,
undo_switch_stack
ret
ret
...
@@ -718,8 +718,8 @@ sys_clone:
...
@@ -718,8 +718,8 @@ sys_clone:
.
ent
sys_vfork
.
ent
sys_vfork
sys_vfork
:
sys_vfork
:
.
prologue
0
.
prologue
0
bsr
$
1
,
do_switch_stack
mov
$sp
,
$
16
mov
$sp
,
$
16
bsr
$
1
,
do_switch_stack
jsr
$
26
,
alpha_vfork
jsr
$
26
,
alpha_vfork
bsr
$
1
,
undo_switch_stack
bsr
$
1
,
undo_switch_stack
ret
ret
...
...
arch/alpha/kernel/process.c
View file @
85f7c390
...
@@ -235,24 +235,25 @@ release_thread(struct task_struct *dead_task)
...
@@ -235,24 +235,25 @@ release_thread(struct task_struct *dead_task)
* with parameters (SIGCHLD, 0).
* with parameters (SIGCHLD, 0).
*/
*/
int
int
alpha_clone
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
*
user
_tid
,
alpha_clone
(
unsigned
long
clone_flags
,
unsigned
long
usp
,
int
*
parent
_tid
,
struct
pt_regs
*
regs
)
int
*
child_tid
,
unsigned
long
tls_value
,
struct
pt_regs
*
regs
)
{
{
struct
task_struct
*
p
;
struct
task_struct
*
p
;
if
(
!
usp
)
if
(
!
usp
)
usp
=
rdusp
();
usp
=
rdusp
();
p
=
do_fork
(
clone_flags
&
~
CLONE_IDLETASK
,
usp
,
regs
,
0
,
user_tid
);
p
=
do_fork
(
clone_flags
&
~
CLONE_IDLETASK
,
usp
,
regs
,
0
,
parent_tid
,
child_tid
);
return
IS_ERR
(
p
)
?
PTR_ERR
(
p
)
:
p
->
pid
;
return
IS_ERR
(
p
)
?
PTR_ERR
(
p
)
:
p
->
pid
;
}
}
int
int
alpha_vfork
(
struct
switch_stack
*
swstack
)
alpha_vfork
(
struct
pt_regs
*
regs
)
{
{
struct
task_struct
*
p
;
struct
task_struct
*
p
;
p
=
do_fork
(
CLONE_VFORK
|
CLONE_VM
|
SIGCHLD
,
rdusp
(),
p
=
do_fork
(
CLONE_VFORK
|
CLONE_VM
|
SIGCHLD
,
rdusp
(),
(
struct
pt_regs
*
)
(
swstack
+
1
),
0
,
NULL
);
regs
,
0
,
NULL
,
NULL
);
return
IS_ERR
(
p
)
?
PTR_ERR
(
p
)
:
p
->
pid
;
return
IS_ERR
(
p
)
?
PTR_ERR
(
p
)
:
p
->
pid
;
}
}
...
@@ -306,7 +307,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
...
@@ -306,7 +307,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
required for proper operation in the case of a threaded
required for proper operation in the case of a threaded
application calling fork. */
application calling fork. */
if
(
clone_flags
&
CLONE_SETTLS
)
if
(
clone_flags
&
CLONE_SETTLS
)
childti
->
pcb
.
unique
=
regs
->
r
19
;
childti
->
pcb
.
unique
=
regs
->
r
20
;
return
0
;
return
0
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment