Veri Bölütünün Boyunun Değiştirilmesi
Önceki III. Oylum - Sanal Bellek Ayırma ve Sayfalama Sonraki
Veri Bölütünün Boyunun Değiştirilmesi
Bu kısımdaki semboller unistd.h başlık dosyasında bildirilmiştir.
Yazılım Verisine Saklama Alanı Ayrılması bölümünde açıklanan işlevlere göre kullanımı daha kolay olduğundan normalde, bu kısımda anlatılan işlevleri kullanacaksınız. Bunlar, kendi kullandıkları GNU C Kütüphanesi bellek ayırıcısı için birer arayüz oldukları gibi sistem çağrılarının da basit birer arayüzüdürler.
int brk
(void *adres)
işlev
brk işlevi çağrı sürecinin veri bölütünün yüksek sonunu adres olarak belirler.
Bölüt sonunun adresi bölütteki son baytın adresi artı bir olarak tanımlıdır.
İşlev, eğer adres veri bölütünün düşük sonundan daha düşükse etkisizdir. (Bu durumda işlevin başarılı olduğu varsayılmıştır.)
İşlev, veri bölütü diğer bir bölütün içine girerse ya da sürecin veri saklama sınırını aşarsa başarısız olur.
Veri saklama alanı ve yığıtın aynı bölütte olduğu bir ortak geçmişsel bir olgu sebebiyle işlev bu ismi almıştır. Yığıt bölütünün üstünden altına doğru büyürken, veri saklama alanı bölütün altından üstüne doğru büyür ve bunlar arasındaki perdeye perde (break) denir.
Başarı durumunda sıfır değeri döner. Başarısızlık durumunda -1 döner ve errno hata değerine ayarlanır. Aşağıdaki errno değeri bu işleve özeldir:
ENOMEM
İstek veri bölütünün başka bir bölütün içine girmesine ya da sürecin veri saklama sınırının aşılmasına sebep oldu.
void *sbrk
(ptrdiff_t delta)
işlev
Bu işlev brk ile aynı sonucu verir, farklı olarak, veri bölütünün sonundan itibaren bir konum olarak delta ile belirtirsiniz ve işlev başarılı olduğunda sıfır yerine veri bölütünün sonunun adres değeri ile döner.
Yani, veri bölütünün o andaki sonunu öğrenmek için sbrk(0) kullanabilirsiniz.
Önceki Üst Ana Başlık Sonraki
Değişken Boyutlu Özdevinimli Saklama Başlangıç Sayfaların Kilitlenmesi
Bir Linux Kitaplığı Sayfası