Sponsored Content
Top Forums Programming Linux Kernel code "current" macro Post 302535013 by Corona688 on Wednesday 29th of June 2011 11:15:38 AM
Old 06-29-2011
Quote:
Originally Posted by kumaran_5555
I was going through the Linux code, i stuck with few inline assembly language code,

I have tried online but in vain. Any help is much appreciated. Thanks.
esp would be the x86 stack pointer. And %0 is a variable parameter which in this case means ~(THREAD_SIZE-1) The stack is the context which thread-local variables, among other things, reside inside. Each thread gets their own little independent chunk.

I believe they're doing something similar to aligning a pointer along page boundaries. If the stack pointer was, say 0xfeff7352 and THREAD_SIZE was 0x00010000, they'd be doing 0xfeff7352 & 0xffff0000, you'd get 0xfeff0000 out of it. I suppose doing this would get you the very top of the thread's stack instance, where (I think) things like the thread ID are kept handy.

THREAD_SIZE may not be the system page size but is probably at least a power-of-two multiple of it.
This User Gave Thanks to Corona688 For This Post:
 

4 More Discussions You Might Find Interesting

1. Solaris

Compliation Error in solaris - macro "min" requires 2 arguments, but only 1 given

Hi, I am trying to compile our linux code base in solaris and came across the following issues. Am I suppose to do something special ? Can anyone help me to fix this issue. System : uname -a SunOS aspen 5.10 Generic_125100-08 sun4u sparc SUNW,Sun-Fire-280R The complier that I am using is... (0 Replies)
Discussion started by: learningkid
0 Replies

2. Shell Programming and Scripting

"find command" to find the files in the current directories but not in the "subdir"

Dear friends, please tell me how to find the files which are existing in the current directory, but it sholud not search in the sub directories.. it is like this, current directory contains file1, file2, file3, dir1, dir2 and dir1 conatins file4, file5 and dir2 contains file6,... (9 Replies)
Discussion started by: swamymns
9 Replies

3. Linux

Supermicro(dual core) server getting rebooted after "decompressing the kernel;booting the kernel" me

supermicro(dual core) server getting rebooted after "decompressing the kernel;booting the kernel" message comes. I tried giving acpi=off to the kernel command line but same problem.It shows everything ok and no problem with memory and processors and power supplies.Wt could be the reason? It has... (1 Reply)
Discussion started by: pankajd
1 Replies

4. Shell Programming and Scripting

"find . -printf" without prepended "." path? Getting path to current working directory?

If I enter (simplified): find . -printf "%p\n" then all files in the output are prepended by a "." like ./local/share/test23.log How can achieve that a.) the leading "./" is omitted and/or b.) the full path to the current directory is inserted (enclosed by brackets and a blank)... (1 Reply)
Discussion started by: pstein
1 Replies
thr_min_stack(3C)					   Standard C Library Functions 					 thr_min_stack(3C)

NAME
thr_min_stack - return the minimum-allowable size for a thread's stack SYNOPSIS
cc -mt [ flag... ] file...[ library... ] #include <thread.h> size_t thr_min_stack(void); DESCRIPTION
When a thread is created with a user-supplied stack, the user must reserve enough space to run this thread. In a dynamically linked execu- tion environment, it is very hard to know what the minimum stack requirments are for a thread. The function thr_min_stack() returns the amount of space needed to execute a null thread. This is a thread that was created to execute a null procedure. A thread that does some- thing useful should have a stack size that is thr_min_stack() + <some increment>. Most users should not be creating threads with user-supplied stacks. This functionality was provided to support applications that wanted complete control over their execution environment. Typically, users should let the threads library manage stack allocation. The threads library provides default stacks which should meet the requirements of any created thread. thr_min_stack() will return the unsigned int THR_MIN_STACK, which is the minimum-allowable size for a thread's stack. In this implementation the default size for a user-thread's stack is one mega-byte. If the second argument to thr_create(3C) is NULL, then the default stack size for the newly-created thread will be used. Otherwise, you may specify a stack-size that is at least THR_MIN_STACK, yet less than the size of your machine's virtual memory. It is recommended that the default stack size be used. To determine the smallest-allowable size for a thread's stack, execute the following: /* cc thisfile.c -lthread */ #define _REENTRANT #include <thread.h> #include <stdio.h> main() { printf("thr_min_stack() returns %u ",thr_min_stack()); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
attributes(5), standards(5) SunOS 5.10 12 May 1998 thr_min_stack(3C)
All times are GMT -4. The time now is 03:09 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy