PostgreSQL解読室:
PGSharedMemoryCreate()/ipc_test/postgresql-8.1.4
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
このページを編集する際は、[[編集に関する方針]]に従ってく...
*概要 [#vede41e0]
-対象:[[ipc_test/postgresql-8.1.4]]
-定義:[[postgresql-8.1.4/src/backend/port/sysv_shmem.c]]
-(概要を書いてください。)
*引数 [#p32e6d26]
- Size size --
- bool makePrivate --
- int port --
*実装 [#lc411548]
PGShmemHeader *
PGSharedMemoryCreate(Size size, bool makePrivate, int po...
{
-[[PGShmemHeader/ipc_test/postgresql-8.1.4]] -- 下記メン...
--int32(signed intの別名)型の変数magic
--pid_t型の変数creatorPID
--Size(size_tの別名)型の変数totalsize
--Size(size_tの別名)型の変数freeoffset
--dev_t型の変数device
--ino_t型の変数inode
-[[Size/ipc_test/postgresql-8.1.4]] -- size_tの別名
-[[bool/ipc_test/postgresql-8.1.4]] -- charの別名
IpcMemoryKey NextShmemSegID;
-[[IpcMemoryKey/ipc_test/postgresql-8.1.4]] -- key_tの別名
void *memAddress;
PGShmemHeader *hdr;
-[[PGShmemHeader/ipc_test/postgresql-8.1.4]] -- 上記参照
IpcMemoryId shmid;
-[[IpcMemoryId/ipc_test/postgresql-8.1.4]] -- intの別名
#ifndef WIN32
struct stat statbuf;
-stat -- sys/stat.hで定義
#endif
/* Room for a header? */
Assert(size > MAXALIGN(sizeof(PGShmemHeader)));
-[[Assert()/ipc_test/postgresql-8.1.4]] -- (USE_ASSERT_C...
-[[MAXALIGN()/ipc_test/postgresql-8.1.4]] -- configureス...
-[[PGShmemHeader/ipc_test/postgresql-8.1.4]] -- 上記参照
/* Make sure PGSharedMemoryAttach doesn't fail without n...
UsedShmemSegAddr = NULL;
-[[UsedShmemSegAddr/ipc_test/postgresql-8.1.4]] -- void型...
/* Loop till we find a free IPC key */
NextShmemSegID = port * 1000;
for (NextShmemSegID++;; NextShmemSegID++)
{
/* Try to create new segment */
memAddress = InternalIpcMemoryCreate(NextShmemSegID, si...
-[[InternalIpcMemoryCreate()/ipc_test/postgresql-8.1.4]]
if (memAddress)
break; /* successful create and attach */
/* Check shared memory and possibly remove and recreate...
if (makePrivate) /* a standalone backend shouldn't do ...
continue;
if ((memAddress = PGSharedMemoryAttach(NextShmemSegID, ...
continue; /* can't attach, not one of mine */
/*
* If I am not the creator and it belongs to an extant ...
* continue.
*/
hdr = (PGShmemHeader *) memAddress;
if (hdr->creatorPID != getpid())
{
if (kill(hdr->creatorPID, 0) == 0 || errno != ESRCH)
{
shmdt(memAddress);
continue; /* segment belongs to a live process */
}
}
/*
* The segment appears to be from a dead Postgres proce...
* previous cycle of life in this same process. Zap it...
* This probably shouldn't fail, but if it does, assume...
* belongs to someone else after all, and continue quie...
*/
shmdt(memAddress);
if (shmctl(shmid, IPC_RMID, NULL) < 0)
continue;
/*
* Now try again to create the segment.
*/
memAddress = InternalIpcMemoryCreate(NextShmemSegID, si...
if (memAddress)
break; /* successful create and attach */
/*
* Can only get here if some other process managed to c...
* shmem key before we did. Let him have that one, loo...
* next key.
*/
}
/*
* OK, we created a new segment. Mark it as created by ...
* order of assignments here is critical so that another...
* can't see the header as valid but belonging to an inv...
*/
hdr = (PGShmemHeader *) memAddress;
hdr->creatorPID = getpid();
hdr->magic = PGShmemMagic;
#ifndef WIN32
/* Fill in the data directory ID info, too */
if (stat(DataDir, &statbuf) < 0)
ereport(FATAL,
(errcode_for_file_access(),
errmsg("could not stat data directory \"%s\": %m",
DataDir)));
hdr->device = statbuf.st_dev;
hdr->inode = statbuf.st_ino;
#endif
/*
* Initialize space allocation status for segment.
*/
hdr->totalsize = size;
hdr->freeoffset = MAXALIGN(sizeof(PGShmemHeader));
/* Save info for possible future use */
UsedShmemSegAddr = memAddress;
UsedShmemSegID = (unsigned long) NextShmemSegID;
return hdr;
}
*呼出元 [#i984eba1]
-[[main()/ipc_test/postgresql-8.1.4]]
*備考 [#lad85dee]
/*
* PGSharedMemoryCreate
*
* Create a shared memory segment of the given size and i...
* standard header. Also, register an on_shmem_exit call...
* the storage.
*
* Dead Postgres segments are recycled if found, but we d...
* collision with non-Postgres shmem segments. The idea h...
* re-use keys that may have been assigned by a crashed p...
*
* makePrivate means to always create a new segment, rath...
* or recycle any existing segment.
*
* The port number is passed for possible use as a key (f...
* it to generate the starting shmem key). In a standalon...
* zero will be passed.
*/
*履歴 [#cd4530ef]
|更新日|更新者|更新内容|
|????/?/?|[[testnoda/ページ作者]]|Wikiページ作成|
|2007/11/11|[[testnoda/ページ作者]]|[[PGSharedMemoryCreat...
*コメント [#ra545201]
- s4hwPv http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com ...
- MRiu7C http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com ...
- ddDlJT http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com ...
- R1iVNa http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com ...
- ' -- &new{2018-09-06 (木) 05:58:45};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:50};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:50};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:51};
- w3bSc9n -- [[,00]] &new{2018-09-06 (木) 05:58:51};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:51};
- c:\ -- &new{2018-09-06 (木) 05:58:51};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:54};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:54};
- ,00 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:55};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:57};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:58};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:58:58};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02};
- w3bSc9n -- [[%u0027]] &new{2018-09-06 (木) 05:59:02};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02};
- c:\Windows\Win.ini -- [[w3bSc9n]] &new{2018-09-06 (木) ...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:02};
- w3bSc9n -- [[c:\Windows\Win.ini]] &new{2018-09-06 (木) ...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:06};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:06};
- %u0027 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:06};
- http://www.google.com -- &new{2018-09-06 (木) 05:59:06};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:10};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:10};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:11};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:11};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:14};
- w3bSc9n -- [[ ']] &new{2018-09-06 (木) 05:59:14};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:14};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:14};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:15};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:15};
- c:\boot.ini -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:1...
- ' -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17};
- htTps://www.google.com -- [[w3bSc9n]] &new{2018-09-06 (...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:17};
- w3bSc9n -- [[htTps://www.google.com]] &new{2018-09-06 (...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:21};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:21};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:22};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:22};
- |echo $((99333685+99333685))||a -- &new{2018-09-06 (木...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:25};
- w3bSc9n -- [[)]] &new{2018-09-06 (木) 05:59:25};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:25};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:25};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:26};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:26};
- w3bSc9n -- [[ | Dir c:\]] &new{2018-09-06 (木) 05:59:29};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29};
- ) -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:29};
- www.google.com -- [[w3bSc9n]] &new{2018-09-06 (木) 05:5...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:30};
- w3bSc9n -- [[www.google.com]] &new{2018-09-06 (木) 05:5...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:31};
- w3bSc9n -- [[\"]] &new{2018-09-06 (木) 05:59:34};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:34};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:35};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:35};
- 609037884 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:35};
- w3bSc9n -- [[678662533]] &new{2018-09-06 (木) 05:59:35};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:38};
- \" -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:40};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:40};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41};
- htTp://www.google.com -- [[w3bSc9n]] &new{2018-09-06 (...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41};
- w3bSc9n -- [[d:\]] &new{2018-09-06 (木) 05:59:41};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:41};
- wsng;SELECT SLEEP(5);-- -- &new{2018-09-06 (木) 05:59:...
- w3bSc9n -- [[htTp://www.google.com]] &new{2018-09-06 (...
- w3bSc9n -- [[[]] &new{2018-09-06 (木) 05:59:44};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:44};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:44};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:44};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:47};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:47};
- '630882778 -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:47};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:48};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:48};
- w3bSc9n -- [['973793977]] &new{2018-09-06 (木) 05:59:48};
- 26ping -n 5 8.8.8.8& -- &new{2018-09-06 (木) 05:59:48};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:50};
- [ -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:50};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:51};
- e:\ -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:51};
- w3bSc9n -- [[268435455]] &new{2018-09-06 (木) 05:59:54};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:54};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:54};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:55};
- '+benchmark(1000000,sha1(1))+' -- &new{2018-09-06 (木)...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:55};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:57};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 05:59:58};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:00};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:00};
- 268435455 -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:01};
- w3bSc9n -- [[-268435455]] &new{2018-09-06 (木) 06:00:06};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:06};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:06};
- file://c/ -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:07};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:11};
- w3bSc9n -- [[file://c/]] &new{2018-09-06 (木) 06:00:12};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:12};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:14};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:14};
-- 268435455 -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:15};
- w3bSc9n -- [[\']] &new{2018-09-06 (木) 06:00:20};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:20};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:20};
- foo/../$value -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:21};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:26};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:26};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:27};
- w3bSc9n -- [[foo/../$value]] &new{2018-09-06 (木) 06:00...
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:29};
- w3bSc9n -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:30};
- \' -- [[w3bSc9n]] &new{2018-09-06 (木) 06:00:30};
- w3bSc9n -- [[\'\");|]*{
<